更改root账号权限

今天在开发机用root账号创建数据库时遇到了报错:
1044 (42000): Access denied for user 'root'@'localhost' to database 'xxx'
看报错提示知道账号'root'@'localhost'没有对应权限

解决问题步骤

  1. 查看账号'root'@'localhost'的权限
    show grants for root@'localhost';
    结果为:GRANT USAGE ON . TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B'
    即账号 'root'@'localhost' 有对所有数据库所有表的 USAGE 权限,USAGE 权限是一个很小的权限,几乎只能进行 DML 语句操作,不能进行创建数据库,数据表之类的操作
  2. 更改账号'root'@'localhost'的权限
    a. 关闭当前的 mysql 服务, sudo service mysqld stop
    b. 开启安全模式的 mysql 服务,sudo ./mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
    c. 进入mysql客户端,mysql -uroot mysql
    d. 刷新权限 flush privileges; (不先刷新权限执行更改权限语句时会报错ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
    d. 赋予账号'root'@'localhost'所有权限,GRANT ALL PRIVILEGES ON . TO 'root'@'localhost';
    e. 刷新权限 flush privileges;
    f. 退出客户端,重启mysql 服务即可。sudo service mysqld restart

你可能感兴趣的:(更改root账号权限)