MySQL错误1142(42000):创建命令拒绝给用户

时间:2019-07-31 18:36:37

标签: mysql

首先使用root用户连接到mysql并创建一个新用户。 he-stie模式已经存在。

mysql -h127.0.0.1 -u"root" -p

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5901
Server version: 5.7.26-0ubuntu0.18.10.1 (Ubuntu)

mysql> CREATE USER 'he-site'@'127.0.0.1' IDENTIFIED BY 'myPassword';
mysql> GRANT ALTER, CREATE, DROP, INDEX, SELECT, INSERT, UPDATE, DELETE, REFERENCES ON `he-site`.`*` TO 'he-site'@'127.0.0.1';
mysql> FLUSH PRIVILEGES;

mysql> SELECT User,Host FROM mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| he-site          | 127.0.0.1 |
| he-tips          | 127.0.0.1 |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'he-site'@'127.0.0.1';
+------------------------------------------------------------------------------------------------------------------------+
| Grants for he-site@127.0.0.1                                                                                           |
+------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'he-site'@'127.0.0.1'                                                                            |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER ON `he-site`.`*` TO 'he-site'@'127.0.0.1' |
+------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

现在使用新用户连接到MySQL并尝试执行操作。

mysql -h127.0.0.1 -u"he-site" -p

mysql> use he-site;
Database changed

mysql> select database();
+------------+
| database() |
+------------+
| he-site    |
+------------+
1 row in set (0.00 sec)

mysql> CREATE TABLE IF NOT EXISTS tasks (     task_id INT AUTO_INCREMENT,     title VARCHAR(255) NOT NULL,     description TEXT,     PRIMARY KEY (task_id) )  ENGINE=INNODB;
ERROR 1142 (42000): CREATE command denied to user 'he-site'@'localhost' for table 'tasks'

mysql> SELECT USER(),CURRENT_USER();
+-------------------+-------------------+
| USER()            | CURRENT_USER()    |
+-------------------+-------------------+
| he-site@localhost | he-site@127.0.0.1 |
+-------------------+-------------------+
1 row in set (0.00 sec)

这到底是怎么回事?其他用户创建了与预期相同的工作方式。

更新

事实证明,这是由于引用*

引起的

1 个答案:

答案 0 :(得分:0)

您可能已将反向DNS查找设置为打开。

show variables like 'skip_name_resolve'

如果显示“ OFF”,则可以尝试将其设置为“ ON”(但是只能在my.cnf中执行此操作,并且必须重新启动服务器)。可能发生的是,MySQL在127.0.0.1上进行反向查找,并为其找到“ localhost”,然后为其应用权限。

更多信息in MySQL docs

相关问题