Не могу запустить mysql с:
130408 11:31:22 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
/usr/libexec/mysqld: Table 'plugin' is read only
130408 11:31:22 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130408 11:31:22 InnoDB: Initializing buffer pool, size = 8.0M
130408 11:31:22 InnoDB: Completed initialization of buffer pool
130408 11:31:23 InnoDB: Started; log sequence number 0 19514977
130408 11:31:23 [ERROR] Can't start server : Bind on unix socket: Permission denied
130408 11:31:23 [ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
130408 11:31:23 [ERROR] Aborting
130408 11:31:23 InnoDB: Starting shutdown...
130408 11:31:28 InnoDB: Shutdown completed; log sequence number 0 19514977
130408 11:31:28 [Note] /usr/libexec/mysqld: Shutdown complete
130408 11:31:28 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
Другой mysql не работает:
[root@triton667 etc]# ps ax | grep mysql
9195 pts/1 S+ 0:00 grep mysql
my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
tmpdir=/tmp
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=256M
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Разрешения на "/ tmp" и "/ var / lib / mysql" - 777 /
Какие-либо предложения?
UPD1:
[root@triton667 etc]# mysql_upgrade
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) trying to connect
FATAL ERROR: Upgrade failed
UPD2: plugin.MYD, plugin.MYI и plugin.frm находятся в / var / lib / mysql / mysql /.
На порте 3306 ничего не работает.
mysql.sock не существует. Пытался создать сам, но после перезагрузки удалили.
mount (все rw):
[root@triton667 mysql]# mount
/dev/md1 on / type ext4 (rw,noatime,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/md0 on /boot type ext2 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
Эта проблема появилась сегодня, когда я попытался клонировать свой сайт на поддомене.
1) Сначала убедитесь, что вы удалили существующий файл сокета с помощью команды rm.
rm /var/lib/mysql/mysql.sock
2) Завершите все существующие процессы MySQL с помощью следующей команды.
service mysql stop
3) Очень важно: убедитесь, что разрешение для каталога базы данных MySQL в /var/lib/
папка должна быть mysql: root
chown -R mysql:root /var/lib/mysql
4) С приведенной выше информацией вы сможете успешно запустить MySQL, а файл сокета должен быть успешно создан в каталоге базы данных.
service mysql start
Благодаря ответу @ Abhishek в сочетании с выводом mysqld (не могу использовать /var/run/mysqld/mysqld.sock) мне удалось решить эту проблему с помощью одной команды:
chown -R mysql:root /var/run/mysqld
Потом запускается нормально:
root@***:~# service mysql start
df: Warning: cannot read table of mounted file systems: No such file or directory
[ ok ] Starting MySQL database server: mysqld ..
[info] Checking for tables which need an upgrade, are corrupt or were
not closed cleanly..
Ваша проблема может быть вызвана любым условием, которое не позволяет демону MySQL записывать файл сокета по пути /var/lib/mysql
. В других ответах, таких как файловая система только для чтения или неправильное владение каталогом, рассматриваются различные причины, по которым MySQL не может выполнять запись в сокет.
Другая возможная причина в том, что /var/lib/mysql
может иметь неверный контекст SELinux. Вы можете диагностировать это состояние, проверив недавние отказы SELinux AVC после попытки запуска демона MySQL:
ausearch -m avc --start recent
Если SELinux запрещает доступ для создания файла сокета, вы увидите следующее сообщение об ошибке:
time->Thu Feb 2 03:46:27 2017
type=SYSCALL msg=audit(1566106187.784:152): arch=c000004e syscall=49 success=no exit=-13 a0=4f a1=7ff3fd652e80 a2=6e a3=7fcd2d6523d40 items=0 ppid=1 pid=1820 auid=4294967295 uid=996 gid=994 euid=996 suid=996 fsuid=996 egid=994 sgid=994 fsgid=994 tty=(none) ses=4294967295 comm="mysqld" exe="/usr/sbin/mysqld" subj=system_u:system_r:mysqld_t:s0 key=(null)
type=AVC msg=audit(1566106187.784:152): avc: denied { create } for pid=1820 comm="mysqld" name="mysql.sock" scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:var_log_t:s0 tclass=sock_file
Чтобы разрешить отказ SELinux, попробуйте восстановить контекст каталога по умолчанию (ваш дистрибутив должен установить правильный контекст mysqld_db_t
когда вы установили MySQL или MariaDB):
restorecon -R -v -f /var/lib/mysql
Если вы настроили контексты в своей системе, решение проблемы выходит за рамки этого сообщения.
Основываясь на том, что вы пишете, я бы посоветовал вам проверить, смонтирована ли ваша файловая система только для чтения.
130408 11:31:22 mysqld_safe Запуск демона mysqld с базами данных из / var / lib / mysql / usr / libexec / mysqld: таблица 'plugin' доступна только для чтения
Я попробовал все остальные ответы, чтобы решить проблему. Похоже, что когда я устанавливаю selinux на permissive: setenforce 0
Я мог запустить сервер.
Затем я изменил каталог носков /var/lib/mysql
предоставление разрешений selinux для каталога:
semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?"
restorecon -R -v -f /var/lib/mysql
После этого я включаю selinux, используя setenforce 1
запустил службу mysql, и все было хорошо.
Надеюсь, это поможет другим.