我有奇怪的错误。我通过命令行以root身份登录本地Mysql。创建数据库后:
create database some_db;
然后为某些用户授予权限:
grant all privileges on some_db.* to some_user@'localhost' identified by 'password';
这是错误的:
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'some_db'
root(show grants;)的权限显示:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*8919C53DC7A4DFBF3F8584382E96463583EB7FDA'
我也确保以root身份登录:
select current_user();
这确认我以“root”@“localhost”
登录我已多次创建数据库并分配了用户,但从未出现过问题。为什么我无法在root用户登录时将用户分配给root创建的数据库?
P.S。从其他帖子,我认为这个问题可能是由于一些奇怪的用户造成的
select host, user from mysql.user;
我尚未添加的某些用户会显示:
MY_COMPuTER_name.local | ''
MY_COMPuTER_name.local | root
我尝试删除这些用户
drop user 'root'@'MY_COMPuTER_name.local';
drop user ''@'MY_COMPuTER_name.local';
但是,虽然它表明查询运行成功,但即使在刷新权限之后也不会删除用户。为什么我无法删除用户?任何帮助都非常适合
答案 0 :(得分:41)
首先,确定您登录的用户:
select user();
select current_user();
第一个命令的结果是您尝试登录的结果,第二个命令是您实际连接的结果。确认您已在mysql中以root@localhost
身份登录。
Grant_priv
至root@localhost
。这是你如何检查。
mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;
+-----------+------------------+-------------------------------------------+------------+------------+
| host | user | password | Grant_priv | Super_priv |
+-----------+------------------+-------------------------------------------+------------+------------+
| localhost | root | ***************************************** | N | Y |
| localhost | debian-sys-maint | ***************************************** | Y | Y |
| localhost | staging | ***************************************** | N | N |
+-----------+------------------+-------------------------------------------+------------+------------+
您可以看到root @ localhost的Grant_priv设置为N.这需要是Y.以下是如何解决这个问题:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';
我重新登录,很好。
答案 1 :(得分:2)
当您尝试在MySQL(沿XAMPP服务器安装)cmd提示符下运行SQL命令时出现错误1044(42000),那么这是解决方案:
关闭MySQL命令提示符。
打开cmd提示符(从“开始”菜单 - >运行 - > cmd),将显示:C:\ Users \ User> _
通过键入以下命令转到MySQL.exe:
C:\Users\User>cd\
C:\>cd xampp
C:\xampp>cd mysql
C:\xxampp\mysql>cd bin
C:\xampp\mysql\bin>mysql -u root
现在尝试输入以下内容来创建新数据库:
mysql> create database employee;
如果显示:
Query OK, 1 row affected (0.00 sec)
mysql>
然后恭喜!你很高兴...
答案 2 :(得分:1)
我无法通过'drop'语句删除某些用户的原因是Mysql http://bugs.mysql.com/bug.php?id=62255中存在一个主机名包含大写字母的错误。解决方案正在运行以下查询:
DELETE FROM mysql.user where host='Some_Host_With_UpperCase_Letters';
我仍在尝试解决另一个问题,即具有所有权限的root用户无法为特定数据库的新用户授予权限
答案 3 :(得分:0)
尝试在文件my.cnf中注释字符串“ sql-mode = ...”,然后重新启动mysql。