当前位置: 首页>>技术教程>>正文


apache2 – 无法为 mysql “root” 用户设置密码

, ,

问题描述

我是 Ubuntu 新手。我正在运行 Ubuntu 12.10。我正在尝试安装 apache、php、mysql。但是我已经安装了 apache,它运行正常。

sudo apt-get install apache2

但是当我尝试使用以下命令安装 mysql 时

sudo apt-get install mysql-server 

下载后,系统要求输入密码,但在输入并确认密码后,我收到以下错误消息。


Unable to set password for the Mysql "root" user

An error occurred while setting password for the mysql
administrative user.This may have happened because the account already has a password, or because of a communication problem with the Mysql server.
You should check the account's password after the package installation.
Please read the /usr/share/doc/mysql-server-5.5/README.Debian file for more information.

单击提示上的“确定”按钮后,我在终端上收到以下消息

Setting up mysql-server-5.5 (5.5.29-0ubuntu0.12.10.1) ...
start: Job failed to start
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
mysql-server-5.5
E: Sub-process /usr/bin/dpkg returned an error code (1)

Mysql错误日志说

130209 14:26:37 [Note] Plugin 'FEDERATED' is disabled.
130209 14:26:37 InnoDB: The InnoDB memory heap is disabled
130209 14:26:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130209 14:26:37 InnoDB: Compressed tables use zlib 1.2.7
130209 14:26:37 InnoDB: Using Linux native AIO
mysqld: Can't create/write to file '/tmp/ibNuz7q0' (Errcode: 13)
130209 14:26:37  InnoDB: Error: unable to create temporary file; errno: 13
130209 14:26:37 [ERROR] Plugin 'InnoDB' init function returned error.
130209 14:26:37 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130209 14:26:37 [ERROR] Unknown/unsupported storage engine: InnoDB
130209 14:26:37 [ERROR] Aborting

我已经搜索过这个问题,但没有任何效果。请帮忙。

最佳方法

这里也有同样的 root 密码设置问题,我的问题可能是由于之前手动安装 mysql server 5.6 失败造成的。彻底卸载 mysql 并非易事。我花了几个小时清除/重新安装,最后终于用以下方法解决了

sudo dpkg --purge mysql-client-core-5.5 # or alternative version
sudo dpkg --purge mysql-client
sudo dpkg --purge mysql-server-core-5.5 # or alternative version
sudo dpkg --purge mysql-common

基本上我只是输入

sudo dpkg --purge mysql # followed by two tabs

然后 --purge 任何打包终端 auto-completes。最后清除 mysql-common,因为存在一些依赖问题。

除了使用上述 dpkg 命令之外

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

我也尝试了 Greq 的方法

sudo rm -rf /etc/mysql

从 /var/lib 中删除 mysql 文件夹

sudo rm -rf /var/lib/mysql/

此时,为了确保 mysql 已完全删除,请检查

which mysql
mysql --version

第一个应该返回无输出,而不是文件夹。第二个应该返回 mysql 未安装,而不是版本号。否则删除仍然不完整。

dpkg --purge 的意义在于,当单独使用 apt-get 时,which mysqlmysql --version 的行为就像 mysql 仍然存在一样。

重新安装之前,重新配置 dpkg 并更新

sudo dpkg --configure -a
sudo apt-get update

问题终于解决了。希望这对其他人有帮助。

次佳方法

您需要彻底删除 mysql。\n相信我,我试过了。dpkg 无法单独完成此操作。

https://stackoverflow.com/questions/10853004/removing-mysql-5-5-completely

如果你很着急

sudo service mysql stop  #or mysqld
sudo killall -9 mysql
sudo killall -9 mysqld
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo deluser mysql
sudo rm -rf /var/lib/mysql
sudo apt-get purge mysql-server-core-5.5
sudo apt-get purge mysql-client-core-5.5

第三种方法

我认为原因是 mysql 无法访问您的 /tmp/ 目录,正如行中所述


mysqld: Can't create/write to file '/tmp/ibNuz7q0' (Errcode: 13)

在终端中运行以下命令:


sudo su
chown root:root /tmp
chmod 1777 /tmp
/usr/sbin/mysqld &

解释:

  • sudo su :以 root 身份运行以下命令。

  • chown root:root /tmp :使 root 组的用户 root 成为 /tmp 的所有者。

  • chmod 1777 /tmp:更改 /tmp 的权限,以便所有用户都可以访问,并且只有所有者或 root 可以删除该目录中的文件。(有关文件权限 here 的更多信息)

  • /usr/sbin/mysqld &:启动 mysqld 守护进程。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14525.html,未经允许,请勿转载。