最近阿里云centos主机到期了改为使用Ubuntu操作系统,在上面安装mysql并远程连接出现了一系列问题并解决。
之前在centos系统上下载mysql8的教程如下:
阿里云服务器(centos7)上的MySQL8数据库下载,安装和远程连接
主机操作系统类型:
1.安装
bash
#更新
apt-get update
#安装mysqlserver
apt-get install mysql-server
#使得mysql可以远程登陆
vim /etc/mysql/mysql.conf.d/mysqld.cnf
#注释掉这一行
#bind-address = 127.0.0.1
#重启mysql
service mysql restart;
2.修改root密码和能够远程连接
bash
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd';
mysql -u root -p (mysql8只能用两句执行了)
CREATE USER 'root'@'%' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
3.问题
ERROR 1698 (28000): Access denied for user 'root'@'localhost'。
原因:MySQL默认使用了UNIX auth_socket plugin插件。简单来说这意味着当db_users使用数据库时,将会通过系统用户认证表进行认证。你可以通过下面的命令看看你的root用户是否设置成了这样:
就像你在查询语句中看到的那样,root用户在使用auth_socket插件。
设置你的root用户使用mysql_native_password插件 。
bash
UPDATE user SET plugin='mysql_native_password' WHERE User='root';
但是这样会导致root需要重新设置密码;
bash
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd';