1
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; |
2
jarlyyn 2017-07-21 18:40:02 +08:00
楼上……………………
大部分发行版安装好 mysql 不都是跑一遍 mysql_secure_installation 么? |
3
evilnull 2017-07-21 19:12:32 +08:00
@jarlyyn 对于 mysql 来说是的,但是对于默认启动了 UNIX_SOCKET 插件的 MariaDB,即使执行了
mysql_secure_installation 仍然需要使用 root 用户才能连接 MariaDB root 账户,而且无需密码。 |
5
jarlyyn 2017-07-21 19:54:05 +08:00
第三张图发错,是非 root 用户登录 root 帐号的
|
6
jarlyyn 2017-07-21 19:59:08 +08:00
另外,再来张指定 socket 文件链接的 3 种登录状况的图
|
7
hcymk2 2017-07-21 20:05:15 +08:00
|
9
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 吧。 |
10
Showfom 2017-07-21 21:57:06 +08:00
所以我推薦用 Percona Server
|
11
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 吧。 |
12
nonozone OP 安装完 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 了 |