使用apt-get来安装mysql,安装好以后发现安装的是 MariaDB,以下,无需密码既能够登陆了。即便使用mysqladmin或mysql_secure_installation 设置好密码,用密码登陆能够,不用密码登陆也能够。html
去google了好久,终于有发现了,是用户插件问题。mysql
参见这里:https://nixmash.com/post/fix-for-mysql-rootlocalhost-access-denied-on-new-installssql
跟安装正常的mysql来比较下,以下ubuntu
正常mysql mysql> select user, plugin from mysql.user where plugin = 'mysql_native_password'; +-----------+-----------------------+ | user | plugin | +-----------+-----------------------+ | root | mysql_native_password | +-----------+-----------------------+ 8 rows in set (0.00 sec)
不正常的
MariaDB [(none)]> select user, plugin from mysql.user;
+------+-------------+
| user | plugin |
+------+-------------+
| root | unix_socket |
+------+-------------+
1 row in set (0.00 sec)
看到这里应该发现问题了,按照正常的修改就好了socket
解决方法:post
root@ubuntu16:~# mysqld_safe --skip-grant-tables
root@ubuntu16:~# mysql
MariaDB [(none)]> UPDATE mysql.user SET authentication_string = PASSWORD('123456'), plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> select user, plugin from mysql.user;
+------+-----------------------+
| user | plugin |
+------+-----------------------+
| root | mysql_native_password |
+------+-----------------------+
1 row in set (0.00 sec)
root@ubuntu16:~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
参考:https://www.cnblogs.com/Dicky-Zhang/p/8000584.htmlgoogle