Ubuntu18.04 安装 Mysql

按照往常的方法安装Mysql完成后,无法通过Mysql root用户登录,错误提示ERROR 1698 (28000): Access denied for user ‘root’@’localhost’,搜索后发现是最近版本Mysql默认使用 auth_socket plugin,所以需要以系统管理员root用户启动Mysql才可以正常登录。

换句话说,你需要使用如下命令启动Mysql:

sudo mysql -u root -p

重新梳理下Ubuntu下安装Mysql的过程:

一、安装

sudo apt update
sudo apt install mysql-server

二、配置

上面已经安装完成,接下来我们进行一些最基本的安全设置,包括设定root密码。确认输入密码后,后面的所有提示都选y按照默认设定。

sudo mysql_secure_installation

三、测试

现在就已经可以登陆了,使用命令行,输入密码登录试试:

sudo mysql -u root -p

四、上述问题的解决方案

对于只能以管理员用户打开并登录Mysql,我们有两种解决方案:

  1. 设置Mysql root用户使用mysql_native_password插件(目前默认为auth_socket)
  2. 以当前用户身份,创建一个新Mysql用户(推荐,更为安全)

选项一

$ sudo mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ sudo systemctl restart mysql

选项二

$ sudo mysql -u root

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ sudo systemctl restart mysql

发表评论

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