这不是为什么?这很重要。这是我怎样才能自己做这件事?
我在用着Ubuntu 10.04 LTS 服务器。 我只想安装 MySQL 服务器,但出于某种原因,它不让我输入。当我运行时,apt-get install mysql-server
一切都正常。在安装结束时,会弹出一个模式窗口,要求我输入密码root
。这里唯一奇怪的是特殊字符的编码(如模式窗口的边框)有点混乱。但我认为这不是主要问题。
安装结束时,MySQL 自动启动,一切正常,直到我尝试登录。mysql -u root -p
提示我Enter password:
。我输入安装期间使用的密码并收到此错误: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
当我使用空密码尝试时,我收到相同的错误,除了(using password: YES)
转到的部分(using password: NO)
。
我做了一些 Google 研究并且已经尝试了所有这些mysqld_safe --skip-grant-tables &
东西。
我还检查了 mysql 用户表。唯一的条目是用户debian-sys-maint
。
mysql> SELECT * FROM user;
+-----------+------------------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections |
+-----------+------------------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
| localhost | debian-sys-maint | *A632698FAB70686111EB0BE3F732A4C244B6DE8C | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 |
+-----------+------------------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
答案1
如果查看用户表时确实没有 root 用户,则说明安装过程中出现了问题。首先要尝试的是
sudo dpkg-重新配置
如果这不起作用,那么你可以尝试
INSERT INTO user VALUES ('localhost','root',password('newpassword'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
INSERT INTO user VALUES ('127.0.0.1','root',password('newpassword'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
INSERT INTO user VALUES ('ebuntu','root',password('newpassword'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
flush privileges;
quit
killall mysqld
/etc/init.d/mysql start
第二组命令无耻地从这里
答案2
如果 debconf 要求您输入 root 用户的密码,这是因为它试图创建 root 帐户。如果没有,则是因为您的系统或您使用的软件包版本存在错误。
我没有 ubuntu 来检查它,但你应该在启动板上寻找类似的问题。
答案3
好的。由于我们确实没有 root 用户,因此我们需要创建一个。MySQL 默认创建维护用户。它被称为debian-sys-maint
。您可以在 中找到它的密码/etc/mysql/debian.cnf
。
start mysql
- 启动 MySQL暴发户如果你还没有这样做的话。vi /etc/mysql/debian.cnf
- 您将看到一个包含一些变量的配置文件。我们正在寻找password = ****************
。mysql -u debian-sys-maint -p
- 系统将提示您输入密码。输入我们刚刚找到的密码。别惊讶,输入时您不会看到任何内容。按 Enter。太棒了!我们进来了!use mysql
- 告诉 MySQL 我们想要编辑它自己的配置数据库。SELECT * FROM user
- 仅用于测试。您应该看到的唯一一行是debian-sys-maint
,即您正在使用的用户当前正在使用。如果您看到其中有多行,您应该立即停止并留下评论,这样您就不会破坏比修复更多的内容。INSERT INTO user VALUES ('localhost','root',password('YourNewPasswordGoesHere'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
- 运行此 SQL 查询。它将插入用户root
并授予其所有权限。不要忘记更改'YourNewPasswordGoesHere'
为您想要的密码。- 你收到错误了吗?
ERROR 1136 (21501): Column count doesn't match value count at row 1
- 看起来我们的新用户的值太多或太少root
。检查SELECT * FROM user
命令并复制 的值。您只需修复、和debian-sys-maint
的数量即可。'Y'
''
0
- 另一个错误- 立即停止!请在评论中告诉我们更多信息。
Query OK, 1 row affected (0.00 sec)
- 这不是错误。这完全是成功!您可以通过 来证明这一点SELECT * FROM user;
。继续下一步。
quit
- 关闭当前 MySQL 会话。到这里我们就完成了。stop mysql
然后start mysql
- 更改需要重新启动才能生效。mysql -u root -p
- 系统提示时输入新密码。按 Enter。- 你完成了!
如果您遇到任何问题,请告知我们并发表评论。
我想感谢MDMarra谁给了我必要的提示!
答案4
“错误 1136 (21501):列数与第 1 行的值数不匹配”:
如果您使用 debian-sys-maint 密码登录并收到以下错误。
您可以更新现有的 root 密码:
更新用户设置authentication_string = 密码('YourNewPasswordGoesHere'),其中host = 'localhost'和user = 'root';
- 重新启动 mysql 并重试:)