mysql 访问被拒绝

mysql 访问被拒绝

我在 Ubuntu 机器上使用 MySQL 时遇到了一些困难。刚刚安装了 Apache、MySQL、PHP 和 phpMyAdmin。phpMyAdmin 给出:

#1045 Cannot log in to the MySQL server

每次登录尝试。我尝试过用户名“root”和空密码、用户名“root”和密码“root”、“用户名“mysql”和密码“mysql”、“用户名“mysql”和密码“root”。

当我尝试在终端中运行时也出现错误:Access denied for user [email protected]mysql

mysql -u root

或者

mysql -u root -p

或者

sudo mysql

或上面列出的任何组合。当我尝试以下操作时,访问也会被拒绝:

mysqladmin -u root password secret

sudo /etc/init.d/mysql stop

甚至

service mysql stop

给出unknown instance

那么 - 谁能告诉我如何进入我的数据库?谢谢。

更新:

当我跑步时ps aux | grep mysql我看到了sudo mysqld --skip-grant-tables

更新 2:

重启后,我看到mysqld正在运行。然后我尝试service mysql stop得到以下内容:

user@host:$ service mysql stop
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.47" (uid=1000 pid=2267 comm="stop mysql ") interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init"))

什么鬼?

更新 3:

我最终使用以下命令成功更改了我的 root 密码:

sudo dpkg-reconfigure mysql-server-5.1

仍然不知道为什么我之前无法登录(不记得之前设置过任何密码)。另外,不确定守护进程在重启后是否能正常运行……

答案1

好的,我认为第一件事是检查它是否真的在运行。执行

ps aux | grep mysql

并检查是否有包含 的行mysqld。如果有,则表示该服务正在运行,您应该能够连接(详细信息见下文)。如果没有,则表示您的服务未运行,因此您无法连接或停止它。

它也有可能变成了僵尸(虽然我从未见过)。在这种情况下,最简单的选择可能是重新启动整个盒子。我知道这听起来很激烈,但僵尸很难杀死(因此得名)。

如果服务正在运行,但您仍然无法连接,那么可能是 MySQL 没有监听。

默认情况下,MySQL 仅允许来自 127.0.0.1 的连接。如果您尝试通过计算机的实际 IP 地址进行连接,则需要告诉 MySQL 监听该 IP 地址。相关行位于 my.cnf 中,如下所示:

bind-address            = 127.0.0.1

将地址修改为你的网络接口的 IP 地址并重启服务。或者,连接到 127.0.0.1

答案2

这里的提示是:

目标="com.ubuntu.Upstart"

您的 Upstart 服务条目中存在某种错误,导致无法正常启动/停止。您正在运行 Lucid 吗?如果是,看这里寻求一些额外的帮助。基本上,这听起来像是一个包装错误。

答案3

ubuntu 上“root”帐户的密码(好吧,由于 root 默认是禁用的,所以你使用的 sudo 密码)是不是与 mysql 的 root 密码相同的密码,可能是在安装过程中提供的。

如果您不知道密码并想重置密码,您可以执行以下操作

  1. 使用 service mysql stop 或 /etc/init.d/mysql stop 停止 mysql
  2. 启动 mysqld_safe 跳过授权表:

    mysqld_safe --skip-grant-tables --skip-networking &

  3. 登录,修改密码(此模式下root密码将被禁用)

    root@vps:~# mysql -u root -p 输入密码:欢迎使用 MySQL 监视器。命令以 ; 或 \g 结尾。您的 MySQL 连接 ID 为 4 服务器版本:5.1.41-3ubuntu12.10-log (Ubuntu)

    输入“help;”或“\h”获取帮助。输入“\c”清除当前输入语句。

    mysql> 更新 mysql.user 设置密码 = 密码 ("foobar"),其中 user="root"; 查询 OK,受影响 3 行 (0.02 秒) 匹配的行数:3 已更改:3 警告:0

    mysql>刷新权限;查询正常,受影响 0 行(0.03 秒)

    4;停止 mysqld_safe 进程,重新启动 mysql,然后您就应该知道您的 root 密码了。Google 上有很多关于如何执行此操作的其他指南,只需在 Google 上搜索“重置 mysql root 密码”即可

相关内容