首先使用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)
这到底是怎么回事?其他用户创建了与预期相同的工作方式。
更新
事实证明,这是由于引用*
答案 0 :(得分:0)
您可能已将反向DNS查找设置为打开。
show variables like 'skip_name_resolve'
如果显示“ OFF”,则可以尝试将其设置为“ ON”(但是只能在my.cnf中执行此操作,并且必须重新启动服务器)。可能发生的是,MySQL在127.0.0.1上进行反向查找,并为其找到“ localhost”,然后为其应用权限。
更多信息in MySQL docs