debian设置MySQL root免密登录和修改root密码
一、修改/etc/mysql/my.cnf配置文件 如果安装了 MariaDB 配置文件在 /etc/mysql/mariadb.conf.d/50-server.cnf
1 2 |
#允许免密认证登陆 skip-grant-tables = true |
二、重启Mysql数据库
1 2 |
#重启mysql /etc/init.d/mysql restart |
三、登陆数据库修改root用户密码
3.1 如果是mysql5.7以下版本 或者 是安装了 MariaDB
1 2 |
mysql -e "UPDATE mysql.user SET password = PASSWORD('Lims@63508790@mysql') WHERE USER = 'root'" mysql -e "update mysql.user set plugin='mysql_native_password'" |
3.2 如果是mysql5.7及以上版本 并且 没有安装 MariaDB
1 2 |
mysql -e "UPDATE mysql.user SET plugin= PASSWORD('63508790') WHERE USER = 'root'" mysql -e "update mysql.user set plugin='mysql_native_password'" |
3.3 如果是MariaDB10.6以上或者报错ERROR 1356 (HY000): View ‘mysql.user’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
a. 查看当前认证状态并修改
1 |
select user, host, plugin from mysql.user; |
若 root 显示为 unix_socket (系统认出是root直接认证)就需要修改模式,按照官网说明(https://mariadb.com/kb/en/authentication-plugin-unix-socket/)即可。
1 |
alter user root@localhost identified via mysql_native_password; |
修改后再查询,状态如下。
1 2 3 4 5 6 7 8 |
+-------------+-----------+-----------------------+ | User | Host | plugin | +-------------+-----------+-----------------------+ | mariadb.sys | localhost | mysql_native_password | | root | localhost | mysql_native_password | | mysql | localhost | mysql_native_password | +-------------+-----------+-----------------------+ 3 rows in set (0.001 sec) |
修改成功后发现还是可以通过 mysql 或 mysql -u root 命令直接进入。此时需要重新设置密码。即使从 mysql_native_password 模式变为 mysql_native_passoword 模式,也需要设置。
b. 重设密码
1 |
ALTER USER `root`@`localhost` IDENTIFIED BY 'password'; |
此时再尝试,如下图,则说明密码设置成功。
1 2 3 |
root@Ubuntu22:~$ mysql -uroot -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) |
恢复MySQL配置文件并重启数据库
1 2 3 4 |
#允许免密认证登陆 #skip-grant-tables = true /etc/init.d/mysql restart |