这不是为什么? 那很重要。 这是我自己怎么做的?
我正在使用Ubuntu 10.04 LTS服务器 。 我只是想安装一个MySQL服务器 ,但由于某种原因,它不会让我。 当我运行apt-get install mysql-server一切正常。 在安装结束时popup一个模式窗口,要求我inputroot密码。 这里唯一的奇怪之处在于特殊字符的编码(比如模态窗口的边界)有点混乱。 但我认为这不是主要问题。
在安装结束时,MySQL自动启动,一切正常,直到我尝试login。 mysql -u root -p提示我Enter password: 。 我input在安装过程中使用的密码,并得到这个错误: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)当我尝试与空密码我得到相同的错误,除了(using password: YES)部分(using password: NO) 。
我做了一些Google研究,已经尝试了所有的mysqld_safe --skip-grant-tables & thingy。
我也检查了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 | +-----------+------------------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+
如果在查看用户表时确实没有root用户,则在安装过程中出现问题。 首先要尝试的是
sudo dpkg-reconfigure
如果那不起作用,那么你可以试试
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
从这里无耻地偷走了第二套命令
如果debconf询问您为root用户提供密码是因为它尝试创buildroot帐户。 如果不是因为您的系统或正在使用的打包版本中存在错误。
我没有Ubuntu的检查,但你应该在启动板上寻找类似的问题。
好的。 由于我们真的没有root用户,我们需要让我们成为一个。 MySQL默认创build维护用户。 它被称为debian-sys-maint 。 你可以在/etc/mysql/debian.cnffind它的密码。
start mysql – 如果你还没有做到这一步,就用Upstart启动MySQL。 vi /etc/mysql/debian.cnf – 你将会看到一个包含一些variables的configuration文件。 我们正在寻找password = **************** 。 mysql -u debian-sys-maint -p – mysql -u debian-sys-maint -p会提示你input密码。 input我们刚刚发现的密码。 不要怀疑,你打字的时候什么都看不到。 按Enter键。 Bazinga! 我们在! use mysql – 告诉MySQL我们要编辑自己的configuration数据库。 SELECT * FROM user – 只是为了testing。 你应该看到的唯一行是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用户的值太多或太less。 检查SELECT * FROM user命令并复制debian-sys-maint的值。 你只需要修正'Y' , ''和0 。 Query OK, 1 row affected (0.00 sec) – 这不是错误。 这是纯粹的成功! 你可以通过SELECT * FROM user;来certificate它SELECT * FROM user; 。 继续下一步。 quit – closures你当前的MySQL会话。 我们在这里完成。 stop mysql ,然后start mysql – 更改需要重新启动才能生效。 mysql -u root -p – 提示时input新密码。 按Enter键。 如果您有任何问题,请告诉我们并发表评论。
我要感谢MDMarra给了我必要的提示!