为啥我 debian8 安装 MariaDB,没有提示输入 root 的密码?

2017-07-21 17:42:00 +08:00
 nonozone
現在让我很迷茫啊,mysqladmin 改的密码貌似也没用。
5063 次点击
所在节点    问与答
12 条回复
evilnull
2017-07-21 18:16:02 +08:00
MariaDB root 账户默认使用了 UNIX_SOCKET 插件,只允许 root 用户连接,无需密码。
可以使用 root 用户连接后创建新用户或者执行:
update mysql.user set plugin = ''where User='root';
flush privileges;
or
update mysql.user set plugin = 'mysql_native_password' where User='root';
flush privileges;
jarlyyn
2017-07-21 18:40:02 +08:00
楼上……………………

大部分发行版安装好 mysql 不都是跑一遍 mysql_secure_installation 么?
evilnull
2017-07-21 19:12:32 +08:00
@jarlyyn 对于 mysql 来说是的,但是对于默认启动了 UNIX_SOCKET 插件的 MariaDB,即使执行了
mysql_secure_installation 仍然需要使用 root 用户才能连接 MariaDB root 账户,而且无需密码。
jarlyyn
2017-07-21 19:52:53 +08:00
@evilnull

你这一本正经的胡说八道把我说的一愣一愣的

随便找了个闲置阿里云服务器重灌了 debian 8 测试了下。





jarlyyn
2017-07-21 19:54:05 +08:00
第三张图发错,是非 root 用户登录 root 帐号的

jarlyyn
2017-07-21 19:59:08 +08:00
另外,再来张指定 socket 文件链接的 3 种登录状况的图

hcymk2
2017-07-21 20:05:15 +08:00
jarlyyn
2017-07-21 20:14:11 +08:00
@hcymk2

Debian 9 都出来了 Debian 8 源里的软件能有多新……
evilnull
2017-07-21 21:53:38 +08:00
@hcymk2 我确实是按照 Debian9 中的 MariaDB 说的,刚安装了 Debian8 stable 测试,从源中安装 MariaDB 是会提示输入 root 密码的,而且确实没有使用 UNIX_SOCKET 插件,而楼主说没有提示输入 root 的密码。
在文档 https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ 里提到 “ The UNIX_SOCKET plugin is installed by default in new installs of Ubuntu 15.10 and later, and Debian testing.” 或许楼主是 Debian testing 吧。
Showfom
2017-07-21 21:57:06 +08:00
所以我推薦用 Percona Server
evilnull
2017-07-21 22:03:27 +08:00
@hcymk2 上一条 at 错了,抱歉
@jarlyyn 我确实是按照 Debian9 中的 MariaDB 说的,刚安装了 Debian8 stable 测试,从源中安装 MariaDB 是会提示输入 root 密码的,而且确实没有使用 UNIX_SOCKET 插件,而楼主说没有提示输入 root 的密码。
在文档 https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin 里提到 “ The UNIX_SOCKET plugin is installed by default in new installs of Ubuntu 15.10 and later, and Debian testing.” 或许楼主是 Debian testing 吧。
nonozone
2017-07-24 18:11:57 +08:00
安装完 MariaDB 之后,运行 mysql_secure_installation,其中有个选项就可以修改 root 密码了 。
但是此时,用 phpmyadmin 或者 adminer 访问的時候,还是会提示
Access denied for user 'root'@'localhost'
这个时候
sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;

这样就 OK 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/377052

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX