Ubuntu 19.04下安装和登录MySQL的注意事项

目前使用的是Ubuntu 19.04,其他版本大同小异。

MySQL 5.7可直接使用sudo apt install mysql-server-5.7命令进行安装,同时会自动安装上mysql-client-core-5.7、mysql-client-5.7、mysql-server-core-5.7等一系列关联包。

安装完成后的初次登录,网上很多教程已经写的很清楚。但不经意间被个小问题卡住,浪费了半个小时才解决,主要表现为:普通用户使用mysql -u root -p password登录会出现“ERROR 1698 (28000): Access denied for user 'root'@'localhost'”的错误,而root用户或sudo mysql -u root -p password则登录成功。

为什么会这样?

登录成功后查看mysql库里的user表,可以发现root的plugin字段为auth_socket,而其他用户plugin字段为mysql_native_password。

auth_socket插件可以让客户端通过Unix套接字文件连接本地MySQL服务器,只能在支持SO_PEERCRED的操作系统,如Linux中使用。关于auth_socket,具体可以看MySQL官网文档:Socket Peer-Credential Pluggable Authentication。而mysql_native_password即为原始的密码验证方式:Native Pluggable Authentication

所以我们只需将root的plugin字段更新为mysql_native_password:

sudo mysql -u root -p #连接MySQL

use mysql; #选择mysql数据库

update user set plugin="mysql_native_password" where user='root'; #更新root的plugin

update user set authentication_string=password("password") where user='root'; #设置root用户密码

flush privileges; #刷新权限

顺便记录Ubuntu初次安装MySQL后,如何登录设置密码,有两种方法:

1、使用debian-sys-maint用户登录:mysql -u debian-sys-maint -p,debian-sys-maint用户的密码通常在/etc/mysql/debian.cnf文件中。登录后设置root密码。

2、修改MySQL配置文件:添加一行“skip-grant-tables”,重启MySQL服务,mysql命令即可跳过验证直接登录,登录后设置root密码,记得最后要删掉“skip-grant-tables”。Ubuntu 19.04使用apt安装MySQL 5.7,配置文件目录:/etc/mysql/mysql.conf.d/mysqld.cnf

参考资料:ubuntu系统下mysql重置密码和修改密码操作

» 链接地址:https://wbt5.com/mysql-root.html »英雄不问来路,转载请注明出处。

发表评论

电子邮件地址不会被公开。 必填项已用*标注