我有一个在 Amazon Linux AMI 上运行的 Amazon EC2 实例,它是一个微型实例。我想在我的服务器上安装 Django,所以我输入了以下命令
wget http://www.mlsite.net/blog/wp-content/uploads/2008/11/go
wget http://www.mlsite.net/blog/wp-content/uploads/2008/11/django.conf
chmod 744 go
./go
做完这些之后,我就sudo service httpd restart
跑去sudo service mysqld restart
以下是 mysqld 出现的结果:
Stopping mysqld: [ OK ]
MySQL Daemon failed to start.
Starting mysqld: [FAILED]
于是我删除了 django 文件/usr/local/python2.6.8/site-packages/django_registration.egg
,然后尝试查找错误,发现在我的
/etc/my.cnf
套接字中,它说socket=/var/lock/subsys/mysql.sock
所以我去了/var/lock/subsys/
,但没有mysql.sock
。我尝试使用 vim 创建一个,但仍然不起作用。然后我检查了错误日志,它说
120712 20:33:11 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120712 20:33:15 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
更新:
我输入了以下命令:cd /var/lib/mysql/
touch mysql.sock
chmod +x mysql.sock
chown mysql:mysql -R *
但它仍然不起作用......
所以我现在很困惑。我知道这与mysql.sock
如果您知道造成这种情况的原因,请告诉我?我的服务器上有一个 wordpress 网站,所以我需要 MySQL 才能工作。谢谢!
答案1
检查go
下载并执行的脚本,我发现以下几行:
# Change the MySQL data directory
sed -e 's!/var/lib/mysql$!/mnt/ebs/mysql!' -i /etc/my.cnf
这实际上改变了您的 mysql 数据目录(datadir
设置),因此您无法访问任何以前创建的数据库(如 wordpress 数据库)。
我大胆猜测,mysqld 无法访问/mnt/ebs/mysql
,因此无法启动。尝试将其改回/var/lib/mysql
。但是,这可能会干扰您的 django。如果您让 django 配置的 mysql 运行,您始终可以添加第二个 my.cnf,使用另一个名称和其他 tcp 端口,并运行两个具有不同配置的 MySQL 服务器。
套接字错误消息表示 MySQL 服务器未运行。不要尝试通过放置文件来模拟套接字。
该go
脚本还对 my.cnf 进行了一些更改,这可能会造成问题。请自己查看 go 文件并尝试撤消所做的更改。
如果以上方法均无帮助,您可以尝试从命令行手动启动 mysqld 进程,使用与服务脚本相同的参数,加上添加--verbose
并发布其输出。
答案2
好的,我明白了,感谢 @escitalopram,所以我会接受他的回答!好的,django 将我的 MySQL 数据目录从 更改为/var/lib/mysql
,因此在我的 中/mnt/ebs/mysql
,它说/etc/my.cnf
/etc/my.cnf
datadir=/mnt/ebs/mysql
然后我将其改为datadir=/var/lib/mysql
。一切正常。我重新启动了 MySQL,希望看到红色的 [FAILED] 消息,但我得到的是 [OK]。另外,我的套接字乱了,/etc/my.cnf
但我已经修复了!
答案3
我在亚马逊 e2c 服务器上也遇到了同样的情况
我也做了同样的事情:
cd /var/lib/mysql/
sudo touch mysql.sock
sudo chmod +x mysql.sock
sudo chown mysql:mysql -R *
重新启动服务器,
然后:
sudo /etc/init.d/mysqld start
检查mysql:
mysql -u root -p
请注意,这不会解决问题。但它会让您有机会访问数据并转移到可靠的服务器