Bra*_*rad 10 mysql mysql-error-1142
我正在尝试建立一个MySQL复制从站,并且运行起来非常困难LOAD DATA FROM MASTER;.是的,我知道它已被弃用,但我正在运行MySQL 5.1,这不是我目前的问题.
出于某种原因,MySQL一直告诉我CREATE命令被拒绝,但是对SHOW GRANTS的检查则另有说法.看一下这个:
mysql> SHOW GRANTS;
+--------------------------------------------------------------------------------------------------------------------+
| Grants for replicator@% |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'replicator'@'%' IDENTIFIED BY PASSWORD '*ABCDEFABCDEFABCDEFABCDEFBLAHBLAHBLAHBLAH' |
+--------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> LOAD DATA FROM MASTER;
ERROR 1142 (42000): CREATE command denied to user 'replicator'@'localhost' for table 'aggregate'
mysql>
Run Code Online (Sandbox Code Playgroud)
我觉得奇怪的是,在打电话时LOAD DATA FROM MASTER,它认为我是'replicator'@'localhost',但是SHOW GRANTS说'replicator'@'%'.为了安全起见,我也给了同样的权利'replicator'@'localhost'.
mysql> SHOW GRANTS FOR 'replicator'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------+
| Grants for replicator@localhost |
+----------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'replicator'@'localhost' IDENTIFIED BY PASSWORD '*ABCDEFABCDEFABCDEFABCDEFBLAHBLAHBLAHBLAH' |
+----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
那么,为什么这一切都搞砸了?是的,我也做了FLUSH PRIVILEGES很多次.
提前感谢您提出的任何建议.
小智 16
对于未来的搜索者,我发现在使用MySQL Workbench和phpMyAdmin的组合时我得到了这个错误:如果你从表列表中复制SQL,它会将模式名称添加到create语句中的表名(并且在可能属于它的外键命令).
小心删除模式名称为我解决了这个问题.
例如:
CREATE TABLE IF NOT EXISTS `schema`.`table1` (
...blah blah blah...
CONSTRAINT `fk_user_id`
FOREIGN KEY (`user_id` )
REFERENCES `schema`.`table1` (`id` )
...blah blah blah...
Run Code Online (Sandbox Code Playgroud)
应改为:
CREATE TABLE IF NOT EXISTS `table1` (
...blah blah blah...
CONSTRAINT `fk_user_id`
FOREIGN KEY (`user_id` )
REFERENCES `table1` (`id` )
...blah blah blah...
Run Code Online (Sandbox Code Playgroud)
Rol*_*DBA 14
我想建议如下:
当您下次登录时运行此查询:
SELECT USER(),CURRENT_USER();
Run Code Online (Sandbox Code Playgroud)
如果您看到两个不同的用户名,则会出现奇怪的情况
您可以在MySQL 5.0认证学习指南(ISBN 0-672-32812-7),第34章或第35章中找到它
USER() 回应您尝试登录的内容
CURRENT_USER() 回声什么mysql允许你登录为.
尝试使用127.0.0.1作为复制器进行连接并运行相同的查询.
您可能还想确保mysql.user中存在所有必需的列,以用于您正在使用的mysql版本.如果你没有升级mysql.user表(从MySQL 4的迁移 - MySQL 5,或MySQL 5.0到5.1),mysql.user中的列可能不同步.
奇怪的是,只需退出客户端并重新连接即可解决问题!显然,FLUSH PRIVILEGES还不够.
如果您了解其中的原因,我想听听您的意见.我一直听说FLUSH PRIVILEGES会这样做.它可能与我最初登录'replicator'@'%'然后创建'replicator'@'localhost'帐户有关吗?
在任何情况下,如果你有像这样的奇怪的权限问题,我想值得尝试重新连接客户端.
| 归档时间: |
|
| 查看次数: |
37394 次 |
| 最近记录: |