ubuntu安装mysql遇到了很多问题,Linux上的问题特别多,国内网站上解决问题的资料又比较少,建议多看看官方文档。
首先,ubuntu必须安装mysql8,安装mysql8以下的版本会遇到各种奇怪的问题。而apt-get上安装的是5.7,官方文档在此:https://dev.mysql.com/doc/refman/8.0/en/
先下载安装mysql-apt-config_0.8.12-1_all.deb(dpkg安装,下载地址:https://dev.mysql.com/downloads/repo/apt/),运行过程中会让你选择需要安装的mysql版本,选择mysql8就行了。这个安装包的作用就是加入一个mysql的软件源。因此安装完成后一定要apt-get udpate一下。update完成后通过apt-get install mysql-server mysql-common安装服务器和客户端。
网站大部分教程写到这里,就说可以通过service mysql start启动mysql了。但是我测试了两台电脑,一台ubuntu18.04,还有一台16.04,都是安装mysql8,安装完成后,均无法通过service mysql start启动服务,都提示mysql: unrecognized service,也就是不识别服务名。直接运行二进制文件sudo mysqld,提示不能以root身份运行mysql,查看官方文档https://dev.mysql.com/doc/refman/8.0/en/changing-mysql-user.html,不建议root运行。需要将/etc/mysql/mysqld.conf.d/myqld.cnf中加入user=username(注意:在mysql的安装过程中,会创建一个名字为mysql的用户,建议在这里就使用这个用户,设置为user=mysql)
改为普通用户运行后,又提示没有权限创建datadir,再次翻官方文档:
shell> chown -R user_name /path/to/mysql/datadir
我的是chown -R mysql /var/mysql/lib
继续运行mysqld,仍然不能成功,报错,无法创建/var/log/mysql/error.log,也是权限问题,但官方文档中似乎没有提到这个,再次赋予权限
现在可以运行了。如果没有提示错误 ,可以使用systemctl status mysql查看mysql的运行状态。如果是绿灯,说明mysql正常运行了。
但是我在mysql -uroot -p,登录时,使用安装时设置的密码无法登陆。网上查了,有人说可能是安装时设置的密码太简单,未能通过验证,无语!但是安装过程没有提示密码复杂度不够。这时遇到另一个问题,通过mysqld启动的服务,无法通过mysqld stop关闭。由于密码不能通过验证,mysqladmin也无法启动,只能通过ps -A |grep mysql找到mysql进程,通过kill -9结束进程。然后通过mysql --skip-grant-tables &重新启动mysqld,然后再通过mysql -uroot 进入数据库,更新密码,发现mysql8的修改密码语句与之前的版本不了样。。。。。ALTER USER "root"@"localhost" IDENTIFIED BY "新密码";修改密码,别忘记flush privileges;
再次启动mysqd,测试通过mysqladmin -uroot -p shutdown,输入密码,可以结束mysql进程了。