今天准备在自己项目的mysql数据库上给别的同事建一个小的数据库用于调试,可是创建用户的时候发现我现在用的业务用户没有权限,然后努力了很久仍然记不起来当时创建数据库时的root用户密码.
下面记录一下解决过程.
1.关闭mysql数据库
service mysql stop
如果没有发布服务或者跟我安装方式不一样可以使用下列命令,先查出所有跟mysql有关的进程,然后全部杀掉
ps -ef|grep mysql
kill -9 xxx
2.跳过权限表启动mysql
方式一、命令模式
mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables &
mysql
use mysql;
方式二、配置模式(推荐)
修改my.cnf(windows是my.ini)
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:
保存文档并退出,重启mysql
3.修改root用户的密码
update user set authentication_string=password(‘oracle123’) where user=‘root’;
flush privileges;
4.恢复权限并重启
方式一、命令模式
mysqladmin -p shutdown
mysqld_safe --defaults-file=/etc/my.cnf &
mysql -uroot -p
方式二、配置模式(推荐)
去掉之前添加到my.cnf的“skip-grant-tables”,重启mysql
service mysql start
5.常见错误
出现ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
错误。则执行下 flush privileges
命令,再执行该命令即可。