在 Linux 中有时安装 Mysql 会出现没有 root 用户的状况, 或者说 root 账户被从 mysql.user 表中误删除, 这样就导致很多权限无法控制解决办法是重新创建 root 用户, 并授予所有权限, 具体方法如下:
1. 修改 / etc/my.conf 文件, 添加 skip-grant-tables
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- user=mysql
- # Disabling symbolic-links is recommended to prevent assorted security risks
- symbolic-links=0
- skip-grant-tables
- [mysqld_safe]
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
2. 重启 mysql 服务
/etc/init.d/mysqld restart
3. 使用下列命令登陆 mysql, 无需密码
mysql
4. 登陆后, 重新添加 root 用户
- use mysql;
- insert into user set user=root,ssl_cipher=,x509_issuer=,x509_subject=;
- update user set Host=localhost,select_priv=y, insert_priv=y,update_priv=y, Alter_priv=y,delete_priv=y,create_priv=y,drop_priv=y,reload_priv=y,shutdown_priv=y,Process_priv=y,file_priv=y,grant_priv=y,References_priv=y,index_priv=y,create_user_priv=y,show_db_priv=y,super_priv=y,create_tmp_table_priv=y,Lock_tables_priv=y,execute_priv=y,repl_slave_priv=y,repl_client_priv=y,create_view_priv=y,show_view_priv=y,create_routine_priv=y,alter_routine_priv=y,create_user_priv=y where user=root;
先退出: quit;
5. 使用下列命令重新登陆, 设置 root 的密码
- mysql -u root
- update mysql.user set password=password(yourrootpasswd) where user=root;
- update user set host = % where user = root; #设置远程机器可访问 mysql, 如果不需要可不是设置
- flush privileges;
- quit;
6. 修改 / etc/my.conf 文件, 将 skip-grant-tables 去掉, 然后重启 mysql
/etc/init.d/mysqld restart
7. 正常则一切 OK
来源: http://www.bubuko.com/infodetail-2541773.html