Вопрос: Mysql. Привязка к разъему unix: разрешение отклонено


Не удается запустить 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)

Эта проблема появилась сегодня, когда я попытался клонировать мой сайт в субдомене.


11
2018-04-08 10:00


Источник


бег mysql_upgrade как было предложено? - NickW
Нет. Touch /var/lib/mysql/mysql.sock - также не работает - Aldwin
Есть ли файл plugin.MYD, plugin.MYI и plugin.frm в / var / lib / mysql / mysql? - NickW
Кроме того, существует ли файл mysql.sock в каталоге / var / lib / mysql? - NickW
Что-то уже работает на порту 3306? - aardvark


Ответы:


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

13
2018-04-08 10:23



Я использую сервер Ubuntu, и это не сработало. - Vitor Mazuco


Благодаря ответу @ 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..

4
2017-10-02 17:52



О, мой, спасибо из будущего :) - Koshinae
Ваш прием из будущего :) - Daniel Kmak


Ваша проблема может быть вызвана любым условием, которое мешает демона 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

Если вы настроили контексты в своей системе, устранение проблемы выходит за рамки этой публикации.


3
2018-02-02 04:58



На CentOS 7 с SELinux это то, с чем я столкнулся, и восстановление контекста фиксировало его. - Ken J


Основываясь на том, что вы пишете, я бы посоветовал вам проверить, установлена ​​ли ваша файловая система только для чтения.

130408 ​​11:31:22 mysqld_safe Запуск mysqld-демона с базами данных из   / var / lib / mysql / usr / libexec / mysqld: Таблица 'plugin' только для чтения


1
2018-04-08 13:24





Я попробовал все другие ответы для решения проблемы. Похоже, что когда я устанавливаю selinux в разрешающий: 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, и все было хорошо.

Надеюсь, это поможет другим.


0
2018-06-01 12:38