“错误 1136 (21501):列数与第 1 行的值数不匹配”:

“错误 1136 (21501):列数与第 1 行的值数不匹配”:

这不是为什么?这很重要。这是我怎样才能自己做这件事?


我在用着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

  1. start mysql- 启动 MySQL暴发户如果你还没有这样做的话。
  2. vi /etc/mysql/debian.cnf- 您将看到一个包含一些变量的配置文件。我们正在寻找password = ****************
  3. mysql -u debian-sys-maint -p- 系统将提示您输入密码。输入我们刚刚找到的密码。别惊讶,输入时您不会看到任何内容。按 Enter。太棒了!我们进来了!
  4. use mysql- 告诉 MySQL 我们想要编辑它自己的配置数据库。
  5. SELECT * FROM user- 仅用于测试。您应该看到的唯一一行是debian-sys-maint,即您正在使用的用户当前正在使用。如果您看到其中有多行,您应该立即停止并留下评论,这样您就不会破坏比修复更多的内容。
  6. 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'为您想要的密码。
  7. 你收到错误了吗?
    • 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;。继续下一步。
  8. quit- 关闭当前 MySQL 会话。到这里我们就完成了。
  9. stop mysql然后start mysql- 更改需要重新启动才能生效。
  10. mysql -u root -p- 系统提示时输入新密码。按 Enter。
  11. 你完成了!

如果您遇到任何问题,请告知我们并发表评论。


我想感谢MDMarra谁给了我必要的提示!

答案4

“错误 1136 (21501):列数与第 1 行的值数不匹配”:

  • 如果您使用 debian-sys-maint 密码登录并收到以下错误。

  • 您可以更新现有的 root 密码:

更新用户设置authentication_string = 密码('YourNewPasswordGoesHere'),其中host = 'localhost'和user = 'root';

  • 重新启动 mysql 并重试:)

相关内容