一、安装
sudo apt-get install mysql-server
二、启动服务
注意:先停止windows的mysql服务。
因为子系统与windows共用端口,有可能出现因为端口占用导致服务启动失败。
sudo service mysql start
报错:
* Starting MySQL database server mysqld
No directory, logging in with HOME=/
这个是由于mysql日志输出的目录没有权限导致的。
解决方法:
# 停止mysql服务
sudo service mysql stop
# 修改权限
sudo usermod -d /var/lib/mysql/ mysql
# 重启mysql服务
sudo service mysql start
三、登录
mysql -u root -p
报错:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
因为安装的过程中没让设置密码,可能密码为空,但无论如何都进不去mysql。
解决方法:
step1:
输入
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
进入到这个配置文件,然后在这个配置文件中的[mysqld]这一块的最后加入
skip-grant-tables
作用:就是让你可以不用密码登录进去mysql。
再重新启动mysql:
service mysql restart
报错:
su: Authentication failure
解决方法:
先进入到root用户:
su root
然后在重新启动即可。
step2:
在终端上输入
mysql -u root -p
遇见输入密码的提示直接回车即可,进入mysql后,分别执行下面三句话:
use mysql; # 回车
update user set authentication_string=password("你的密码") where user="root"; # 回车
flush privileges; # 回车
quit
step3:
重新进入到mysqld.cnf文件中去把刚开始加的 skip-grant-tables 这条语句给注释掉:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
mysql -u root -p
没报错即完成。下面就不用看了。
step4:
报错:
ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded
解决方法:
把注释掉的那条语句重新生效(即删除#符号)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
重启:
service mysql restart
再重新进入mysql中:
mysql -u root -p
进去后:
use mysql;
select user,plugin from user;
可见错误原因是因为plugin root的字段是auth_socket,那我们改掉它为下面的mysql_native_password即可:
update user set authentication_string=password("你的密码"),plugin='mysql_native_password' where user='root';
回车执行。
quit
再执行一次step3即可。
以上的4个step参考自:https://www.cnblogs.com/cpl9412290130/p/9583868.html ?