都好:
使用以下命令即可成功安装 Mysql 服务器:
sudo apt-get install mysql-server
在安装过程中,系统提示我选择 root 密码。安装后,我可以使用以下命令登录 mysql monitor:
mysql -u root -p
当系统提示时,我输入密码并成功登录。
问题:
当我重新启动服务器然后尝试登录 mysql 监视器时,输入密码后出现此错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
当我查看时,/var/run/mysqld/
我没有看到任何名为 的文件mysqld.sock
。在重新启动之前,该位置有一个同名文件。它也在我的客户端 shell 程序 (mRemoteNG) 中以红色突出显示。
如果我尝试通过执行以下操作来创建该文件:
sudo touch mysqld.sock
它确实创建了,但没有以红色突出显示,当我再次尝试登录时,出现与之前相同的错误。
我已无数次尝试卸载并重新安装 mysql 和 mysql-server,但每次都会出现同样的问题。
我也尝试过 stropping 并启动 mysql 服务,但没有任何区别。
笔记:
只有在全新 Ubuntu 上第一次安装 mysql-server 时才会提示我选择密码。此后,无论何时卸载并重新安装它,它都不会提示我选择密码,只是说它已成功安装。
问题:
如何正确安装 mysql-server 以便它在重新启动服务器后始终存在?
答案1
mysql-server
在 Debian 或 Ubuntu 上安装和运行的方式实际上是apt-get install mysql-server
。
如果这不起作用,那么你还有另一个问题,最好的解决办法是查看日志,试着找出它无法启动的原因——这个问题绝对是不是你是如何安装它的。
答案2
确保它已配置为在重启时正确启动。这通常意味着运行“update-rc.d mysqld defaults”(或非常类似的命令)。update-rc.d 将创建从 /etc/init.d 到启动脚本目录的符号链接,例如 /etc/rc3.d。
我不知道 mysqld 是否在你的 Ubuntu 版本上使用 Upstart 启动。在这种情况下,将有一个类似的过程将 mysqld 启动脚本放入 /etc/init。
答案3
取决于发行版,您不需要手动创建套接字文件。
使用 chkconfig (CentOS):
chkconfig --level 345 mysqld on
或者创建指向您希望执行服务的运行级别的符号链接:
# Mysql Startup
ln -s /etc/init.d/mysqld /etc/rc.d/rc3.d/S85mysqld
ln -s /etc/init.d/mysqld /etc/rc.d/rc4.d/S85mysqld
ln -s /etc/init.d/mysqld /etc/rc.d/rc5.d/S85mysqld
# MySQL clean shutdown
ln -s /etc/init.d/mysqld /etc/rc.d/rc0.d/K85mysqld
ln -s /etc/init.d/mysqld /etc/rc.d/rc6.d/K85mysqld
当您说您已尝试启动/停止服务但没有任何反应时,您的意思是:它在重启后自动启动方面没有做任何事情,还是在启动 mysql 服务期间没有做任何事情?
编辑:刚刚意识到你用 Ubuntu 标记了帖子,如果你使用的是 10.04+,请检查 Ubuntu 的 upstart 脚本,似乎 aptitude 应该在安装时为你放入一个。如果你认为它已配置为自动启动但未能自动启动,请检查 /var/log/mysql(d) 中的日志。
答案4
首先,删除您创建的 mysqld.sock 文件 - 服务器将自动创建该文件,如果该文件存在,可能会导致它不再启动。
使用 apt-get install mysql-server 安装它(就像你说的那样)。
重启。如果重启后没有运行,请执行“sudo /etc/init.d/mysql start”
检查它现在是否正在运行。如果没有,请查看 /var/log/mysql 和 /var/log/daemon.log 中是否有任何错误消息
为了使其始终在启动时启动,请运行“update-rc.d mysql defaults”