我要为这件事把头发拔出来。令人意外的是(看起来,我已经几个星期没有登录到服务器了) mysql死了,我无法重新启动它。我在Ubuntu 14.04。尝试重新启动时,日志中会显示以下内容:
170502 18:00:57 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
170502 18:00:57 [Note] - '127.0.0.1' resolves to '127.0.0.1';
170502 18:00:57 [ERROR] Failed to create a socket for IPv4 '127.0.0.1': errno: 13.
170502 18:00:57 [ERROR] Can't create IP socket: Permission denied
170502 18:00:57 [ERROR] Aborting你说是许可?
root@mleserver:~# ls -ld /var/run/mysqld/
drwxr-xr-x 2 mysql mysql 40 May 2 16:46 /var/run/mysqld/啊,不对。
root@mleserver:~# ls -la /var/lib/mysql
total 2521564
drwx------ 10 mysql mysql 4096 May 2 18:00 .
drwxr-xr-x 55 root root 4096 May 2 16:51 ..
-rw-r--r-- 1 mysql mysql 0 Oct 9 2013 debian-5.1.flag
-rw-r--r-- 1 mysql mysql 0 May 2 17:50 debian-5.5.flag
-rw-rw---- 1 mysql mysql 2569011200 May 2 18:00 ibdata1
-rw-rw---- 1 mysql mysql 5242880 May 2 18:00 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 May 2 18:00 ib_logfile1
drwx------ 2 mysql mysql 4096 Aug 15 2016 mleserver_production
drwx------ 2 mysql mysql 4096 May 2 17:50 mysql
-rw-rw---- 1 mysql mysql 6 Jan 20 06:47 mysql_upgrade_info
drwx------ 2 mysql mysql 4096 May 2 17:50 performance_schema看起来也不坏。
root@mleserver:/tmp# cat /etc/passwd
...
mysql:x:104:111:MySQL Server,,,:/nonexistent:/bin/false我决定从轨道上核爆它:
sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-server mysql-client但错误仍然存在。有人有什么想法吗?在这一点上,我不介意从头开始重建服务器,但我希望能够从数据库中获取数据.虽然我需要能先连接到它。这是我的my.cnf文件:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/发布于 2017-05-03 03:46:57
如果这对其他人有帮助的话,结果是AppArmor拒绝执行。来自syslog
May 2 23:35:51 devanalyzer kernel: [24540.913056] type=1400 audit(1493782551.291:50): apparmor="DENIED" operation="create" parent=1 profile="/usr/sbin/mysqld" pid=25601 comm="mysqld" family="inet" sock_type="stream" protocol=6我不太关心诊断它,因为我要拆除这台服务器,但我能够绕过它,将所有配置文件设置为抱怨模式,而不是强制模式:
sudo aa-complain /etc/apparmor.d/*在此之后,sudo service mysql start按预期工作。
https://serverfault.com/questions/847891
复制相似问题