root账户用不了,数据目录无法更改,mysql服务起不来……各种坑整了我好几个小时

问题一:在mysql的配置目录里更改了data目录之后,mysql启动不起来

这个时候,看mysql的日志,发现日志显示,data目录不可读写

原因:ubuntu server有一个预装软件叫apparmor,你去百度一下就知道这货是干啥的了…,他会限制mysql的data目录位置,如果mysql试图向它不允许的位置进行读写,它就会阻止…

解决方案:

  1. apt-get remove apparmor #还有什么比直接删掉更彻底呢….
  2. 更改apparmor的配置文件,位置在/etc/apparmor.d/usr.sbin.mysqld
    搜索你mysql原来的data目录位置,然后把它替换为新的地址
  3. ln -s 源目录 目标目录 创建一个软连接,在你原先的data目录位置创建一个到新data目录的软连接,apparmor不会拦截这种情况

问题二:root密码呢?

ubuntu server 在使用apt-get安装mysql的时候,会默认创建一个具有管理员权限的账户,用户名和密码保存在/etc/mysql/debian.cnf文件中,登入后拥有全部权限.
还有,root用户直接输入mysql指令,不需要任何参数,直接可以登入mysq,并拥有管理员权限


问题三:明明改了root密码,但是使用更改的密码就是登入不上去

在mysql库的user表里面看看,root用户的默认登入方式(plugin字段)是auth-socket…而一般的密码登入,该字段的值应该是mysql_native_password
(为啥登入方式字段叫plugin?因为这玩意叫鉴权插件,是插件,不叫方式…)

解决方案:
用问题二所描述的方法登入mysql,
然后执行sql语句use mysql;update set plugin=”mysql_native_password” where user=”root”;
来把登入方式改成传统的密码登入