隐藏内容

MYSQL数据库ROOT用户无权限问题解决

解决方法一:

  • 在数据库配置文件中加入skip-grant-tables
  • 在mysql的bin目录下执行:mysql -uroot -p 密码为空直接Enter登录
  • 登陆到数据: 执行use mysql; select host,user,password from user;
  • 可以看到user为root,host为localhost的话,说明mysql只允许本机连接,那么外网,本地软件客户端就无法连接了。
  • 调整方法: 执行:use mysql 再执行update user set host=’%’ where user =’root’;
  • 执行刷新权限:flush privileges; 可以测试外网连接mysql服务器。

解决方法二:

  • 停止mysql服务;在mysql安装目录下找到mysqld.cnf;在mysqld.cnf中找到以下片段[mysqld];另起一行加入代码:skip-grant-tables 并保存
  • 启动mysql服务,并登录
  • 有用户的情况用用户名密码登录
  • 无用户的情况直接可登录(无用户名和密码),然后加入root用户
    INSERT INTO user (Host,User,Password) VALUES( ‘localhost ‘, ‘root ‘,password( ‘123456 ‘));
  • root用户设置权限
    update user set Host=’%’,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’;commit;
  • 把mysql.conf.d刚才加入的那行删除并重启服务
  • 最后用root用户登录就可以了

二、其他有关命令

  • 给用户授权
    GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘123456’;
    授权后刷新权限,使其生效 flush privileges; 查看mysql用户有哪些 select user,host from mysql.user;
    更新用户密码 UPDATE mysql.user SET Password=PASSWORD(‘123′) where USER=’root’;
    删除用户 Delete FROM mysql.user Where User=’root’ and Host=’%’;
    插入用户 insert into mysql.user(Host,User,Password) values(“%”,”root”,password(“123456”));

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注