1

因此,如果我键入mysql -u root我应该已登录,但是在尝试创建或访问数据库时,我会收到这个可爱的错误:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'test1'. 我不知道为什么在以 root 身份登录后它正在尝试访问数据库''@'localhost',这让我现在有点发疯。可能相关,当我尝试设置 root 密码时出现错误mysqladmin: Can't turn off logging; error: 'Access denied; you need (at least one of) the SUPER privilege(s) for this operation'。我尝试通过运行删除 mysql-server apt-get purge mysql-server,然后重新安装,但没有成功。这是运行 Ubuntu Server 12.10 64 位并且 mysql 确实在运行。

- 编辑 -

我想知道是否可能没有root用户。所以我尝试使用启动 MySQL--skip-grant-tables并创建 root 用户,但随后我得到了这个: ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement. 好玩好玩好玩好玩。

--再次编辑--

我对加工中的所有mysql都采取了钝锤,并以root身份运行apt-get remove .*mysql.*apt-get purge .*msyql.*然后重新安装了所有东西。这次安装按预期进行。如果没有人能对此提出答案(并且问题不再存在以进行测试可能无济于事)我会自己回答这个问题......似乎是这样的,绝对删除糟糕的安装是最好的选择。

--再次编辑--

我发现了导致问题的原因。我跑了rake db:createrake db:migrate我新安装且功能正常的 MySQL 现在又出现了同样的问题。我想知道 rake 任务是否已经接管了 MySQL,就像一种真菌接管了一只蚂蚁一样……我的 MySQL 是一只被 rake 出没的僵尸蚂蚁(?!?!?!?!)。

4

3 回答 3

1

如果您使用的是 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;

不要忘记;最后,不要忘记刷新特权;现在再次启动mysql:

sudo /etc/init.d/mysql start

这应该这样做。

如果 root 用户因某种奇怪的命运转折而无法使用,则此行:

   sudo mysqld_safe --skip-grant-tables &

仍然会为您提供创建新 root 用户的选项,但在这种情况下,请使用 google 查找方法。

于 2012-11-24T23:14:18.613 回答
0

几秒钟前我遇到了这个问题并来到这里寻求答案,但后来我开始思考我从 mysqladmin 命令中得到的答案。所以我尝试了这个1:使用sudo su(root-password)在终端中以root身份登录,然后输入不带引号但空格是必须的:

mysqladmin -u @'hostname' (us your hostname then press enter).
于 2013-02-16T15:26:17.663 回答
0

使用 登录 mysqlmysql -u root并输入show grants for 'root'@'localhost';. 这应该告诉你,是否允许 root 任何东西。

顺便说一句,您是否在不提供密码的情况下登录?

于 2012-11-24T23:05:00.720 回答