在 Ubuntu18.04 中使用 sudo apt-get install mysql-server
安装 MySQL时,会默认安装 MySQL5.7,且无法通过 mysql -uroot -p
进入 MySQL。报错:"Access denied for user 'root'@'localhost'"
原因:root 的 plugin 被修改为了 auth_socket,而密码登录的 plugin 应该是 mysql_native_password。
一、安装命令
依次执行一下命令:
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
sudo netstat -tap | grep mysql
二、设置密码
直接 Root 权限登录,可不用密码。
# 切换到Root用户
$ sudo su
# 直接进入MySQL,无须密码
$ mysql
# 查看账户,可看出 root 的 plugin 是 auth_socket,其他的都是 mysql_native_password
mysql> select user,plugin,from mysql.user;
+------------------+-----------------------+
| user | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.session | mysql_native_password |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
4 rows in set (0.00 sec)
# 更新密码、更换 plugin
mysql> update mysql.user set authentication_string=PASSWORD('123456'), plugin='mysql_native_password' where user='root';
# 刷新权限
mysql> flush privileges;
# 退出MySQL
mysql> exit
# 重启MySQL服务
$ sudo /etc/init.d/mysql restart
此时再输入 mysql -uroot -p
,即可通过密码连接了。
三、配置远程登录
,并将root的访问改为 *.*
即可。
# 找到配置文件,注释掉bind-address
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 进入MySQL
$ mysql -uroot -p
# 修改Root用户的访问权限
mysql> grant all on *.* to root@'%' identified by '123456' with grant option;
# 刷新权限
mysql> flush privileges;
# 退出MySQL
mysql> exit
# 重启MySQL服务
$ sudo /etc/init.d/mysql restart
四、卸载MySQL
# 查看 MySQL 的依赖项
$ dpkg --list|grep mysql
# 卸载命令
$ sudo apt-get remove mysql-common
# 卸载命令
$ sudo apt-get autoremove --purge mysql-server-5.7
# 清除残留数据
$ dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P
# 再次查看 MySQL 剩余依赖项
$ dpkg --list|grep mysql
# 删除剩余依赖项
$ sudo apt-get autoremove --purge mysql-apt-config