首先,在sudo中连接mysqlsudo mysql -u root
检查你的数据库中的帐户SELECT User,Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| admin | localhost |
| debian-sys-maint | localhost |
| magento_user | localhost |
| mysql.sys | localhost |
| root | localhost |
删除当前root localhost帐户mysql> DROP USER 'root'@'localhost';
Query OK, 0 rows affected (0,00 sec)
重新创建用户mysql> CREATE USER 'root'@'%' IDENTIFIED BY '';
Query OK, 0 rows affected (0,00 sec)
向用户授予权限(不要忘记刷新权限)mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0,00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,01 sec)
退出MySQL并尝试不使用sudo重新连接。
如果你安装5.7,并且不为root用户提供密码,它会使用auth_socket插件,插件不需要密码,它只是检查用户是否使用UNIX套接字连接,然后比较用户名。
为了将plugin更改为mysql_native_password:
使用sudo登录:sudo mysql -u root
更改plugin并使用单个命令设置密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
当然,你也可以使用上面的命令设置一个空密码。
就记录而言,(和MariaDB < 10.2用户)还有另一种方法可以只更改plugin而不提供密码(空了):update mysql.user set plugin = 'mysql_native_password' where User='root';
// to change the password too (credits goes to Pothi Kalimuthu)
// UPDATE mysql.user SET plugin = 'mysql_native_password', Password = PASSWORD('secret') WHERE User = 'root';
FLUSH PRIVILEGES;
相关文章