朋友的CentOS服务器,帮忙迁移个数据库,结果解压后重启MySQL发现没有root密码无法给对应的数据库添加账户,经过查找尝试,整理方法如下,可以在安全模式下,执行数据库命令添加账户或修改root密码,指令如下:

/etc/rc.d/init.d/mysql stop
/usr/bin/mysql_safe --user=mysql --skip-grant-tables &
#/usr/bin/mysql_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root
insert into mysql.user (host,user,password) values ('localhost','用户名',password('密码'));
INSERT INTO `mysql`.`db` (`Host`, `Db`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Execute_priv`, `Event_priv`, `Trigger_priv`) VALUES ('localhost', '目标数据库', '用户名', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');
flush privileges;
quit;
ps aux
kill mysqlpid
/etc/rc.d/init.d/mysql start

上面的指令是添加一个账户并给其全部权限到目标数据库。

修改root密码的指令如下:

update mysql.user set password=password("新密码") where user="root";

Related Posts: Centos-MySQL无root密码的情况下,命令行重置密码并添加数据库管理权限 :