在使用mysql过程中,可能存在mysql root账户不存在或者说root账户被从mysql.user表中误删除,这样就导致很多权限无法控制。解决办法是重新创建root用户,并授予所有权限,具体方法如下:
1. 修改/etc/my.conf文件,添加skip-grant-tables
[mysqld]
skip-grant-tables
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
[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
=================
改你的my.ini或my.cnf文件,在 [mysqld] 节下加入下面一行
skip-grant-tables
然后保存并重启 MySQL 服务。 下面你就可以以任何用户名密码登陆数据库教程了。(1)如果是误删了root用户,则使用下面的语句创建root用户:
insert into user set Host=’localhost’,User=’root’,Password=Password(‘111111′),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’,Event_priv=’Y’,Trigger_priv=’Y’;
(2)如果是忘记了root用户的密码,则使用下面的语句修改root密码:
update user set Password=Password(‘111111′) where User=’root’;
注意:处理完之后记得吧你的my.ini或my.cnf文件,在 [mysqld] 节下加入下面一行
skip-grant-tables 去掉===========================
开远程:
mysql> use mysql;
mysql> update user set host=”%” where user=”root”;
mysql> flush privileges;
文章评论 本文章有个评论