因此,如果我输入 mysql -u root
,我应该已经登录了,但是在尝试创建或访问数据库时,我得到了这个可爱的错误:ERROR 1044 (42000): Access拒绝用户 ''@'localhost' 访问数据库 'test1'
。我完全不明白为什么在以 root 身份登录后,它会尝试以 ''@'localhost'
身份访问数据库,这让我有点抓狂。可能相关,当我尝试设置 root 密码时出现错误 mysqladmin: Can't turn off logging;错误:'访问被拒绝;您需要(至少其中一项)此操作的 SUPER 权限'
。我尝试通过运行 apt-get purge mysql-server
删除 mysql-server,然后重新安装,但没有成功。这是运行 Ubuntu Server 12.10 64 位并且 mysql 确实在运行。
--编辑--
我想知道是否没有 root 用户。所以我尝试使用 --skip-grant-tables
启动 MySQL 并创建 root 用户,但随后我得到了这个:
错误 1290 (HY000):MySQL 服务器正在使用 --skip-grant-tables 选项运行,因此无法执行此语句
。好玩好玩好玩好玩。
--再次编辑--
我对机器上的所有 mysql 采取了钝锤并以 root 身份运行 apt-get remove .*mysql.*
和 apt-get purge .*msyql.*
然后重新安装所有内容。这次安装如期进行。如果没有人能对此给出答案(并且问题不再存在以进行测试可能无济于事)我会自己回答这个问题......看起来像这样,绝对删除错误的安装是最好的选择。
--再次编辑--
我发现了导致问题的原因。我运行了 rake db:create
和 rake db:migrate
,我新安装并正常运行的 MySQL 现在又出现了同样的问题。我想知道 rake 任务是否已经接管了 MySQL,就像一个真菌接管了一只 Ant ......我的 MySQL 是一只 rake 出没的僵尸 Ant (?!?!?!?!)。
最佳答案
如果您使用的是 Ubuntu,您的 mysql root 密码应该是您系统 root 用户的密码,除非您在 mysql 安装过程中更改了它。
在任何其他情况下,停止mysql。
执行这个:
sudo mysqld_safe --skip-grant-tables &
它将使您无需密码即可登录到 mysql root。
现在执行:
UPDATE mysql.user SET Password=PASSWORD(‘new_password’) WHERE User=’root’;
FLUSH PRIVILEGES;
不要忘记;最后别忘了FLUSH PRIVILEGES;现在再次启动mysql:
sudo /etc/init.d/mysql start
应该这样做。
如果 root 用户由于某种奇怪的命运转折而不可用,则此行:
sudo mysqld_safe --skip-grant-tables &
仍然会给你一个选项来创建新的根用户,但在这种情况下使用谷歌来查找如何。
关于mysql - Rake 似乎在劫持 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13546440/