MySQL笔记-启动时log报错Table ‘mysql.user‘ doesn‘t exist
安装好mysql后,正常使用(使用的是rpm版安装的)
service mysqld start | stop | restart
不会出现这个问题。
我遇到的情况是在凝思操作系统上,已经存在了一个mysql。网上查找了一些资料,卸载,后可能卸载不干净,使用上面命令mysql启动不了。出现的报错和以前卸载前的东西有关。
因此采用了如下方式启动:
/usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=root&
这里会出现Table 'mysql.user' doesn't exist报错,启动不了。
原因是没有进行初始化,可以理解成service mysql start这个命令里面的一小步。
/usr/sbin/mysqld --initialize --user=root --basedir=XXXX --datadir=XXXX
注意basedir和datadir,特别是这个datadir很关键,mysql.user就是在里面。
这个datadir的目录需要和 /etc/my.cnf里面的配置一致:
[mysqld]
#数据存储路径
# /usr/sbin/mysqld --initialize --user=root --basedir=XXXX --datadir=XXXX
# 设置datadir目录
datadir=/var/lib/mysql
然后停止mysql,注意这里一定要用service去操作
service mysqld stop
特别是有遗留mysql的系统。
随后在/etc/my.cnf中新增跳过密码:
[mysqld]
skip-grant-tables
再启动mysql
/usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=root&
最后就能正常进入修改用户名密码了。
以后启动就用
/usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=root&
停止:
service mysqld stop
补充mysql5.7中修改用户密码的命令:
alter user 'root'@'localhost' identified by '123';