MySQL的root用户不能创建用户
当时的场景是这样的:
在刚装好数据库时,因为考虑到安全的问题,我在第一次登录数据库时就删除了那些自带的root用户,也就是没有密码的,host为localhost | 主机名 | 127.0.0.1这些root用户,还有空用户名的。
然后我就自己创建了一个root用户,命令如下:
mysql > grant all on *.* to root@'%' identified by '123123';
这权限够大吧!
但是当我退出后,使用此用户登录mysql -uroot -h192.168.0.177 -p123123
进来时使用这个root用户创建用户,出现如下报错:
mysql> grant all on wordpress1.* to wordpress@'192.168.0.%' identified by '123123';
ERROR 1044 (42000): Access denied for user 'root'@'192.168.0.%' to database 'wordpress1'
权限拒绝!!!
后来在网上各种找答案,花了好长时间,终于解决了
原来是自己创建的root用户没有创建用户的权限!with grant option
后来查看了user表。修改了这个值,步骤如下:
mysql> select user,host,Grant_priv from mysql.user;
+-----------+-------------+------------+
| user | host | Grant_priv |
+-----------+-------------+------------+
| root | 192.168.0.% | N |
+-----------+-------------+------------+
1 rows in set (0.00 sec)
权限为N,也就是此用户没有创建用户的权限,将其修改
mysql> update mysql.user set Grant_priv='Y' where user='root';
再次查看
mysql> select user,host,Grant_priv from mysql.user;
+-----------+-------------+------------+
| user | host | Grant_priv |
+-----------+-------------+------------+
| root | 192.168.0.% | Y |
+-----------+-------------+------------+
1 rows in set (0.00 sec)
然后,也是必须的一步:
mysql> flush privileges;
千万要记得,我就是没写!哈哈哈
查看的结果是这样的:
mysql> show grants for root@'192.168.0.%'\G
*************************** 1. row ***************************
Grants for root@192.168.0.%: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%' IDENTIFIED BY PASSWORD '*E56A114692FE0DE073F9A1DD68A00EEB9703F3F1' WITH GRANT OPTION
1 row in set (0.00 sec)
后面出现 WITH GRANT OPTION
就可以了!
执行完flush privileges;
后默认还是不能创建用户,需要退出一下,再次登录,然后创建就OK了!!!
mysql> grant all on wordpress1.* to wordpress@'192.168.0.%' identified by '123123';
Query OK, 0 rows affected (0.00 sec)