Назад | Перейти на главную страницу

Не удается подключиться к локальному серверу MySQL через сокет '/opt/local/var/run/percona/mysqld.sock'

Я установил сервер Percona с использованием macports на моем компьютере Mac, однако я столкнулся с ошибкой сокета выше, как вы можете видеть ниже:

Sauds-MacBook-Pro:percona jini$ sudo /opt/local/lib/percona/bin/mysql_secure_installation

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
          SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!


    In order to log into MySQL to secure it, we'll need the current
    password for the root user.  If you've just installed MySQL, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.

    Enter current password for root (enter for none): 
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/percona/mysqld.sock' (2)

Странно то, что я могу подключиться к mysql из командной строки и с помощью php. Просто когда я пытаюсь запустить указанную выше команду, она терпит неудачу.

Вот содержимое моего my.cnf:

[mysql]

# CLIENT #
port                           = 3306
socket                         = /opt/local/var/db/percona/mysql.sock

[mysqld]

# GENERAL #
user                           = mysql
default-storage-engine         = InnoDB
socket                         = /opt/local/var/db/percona/mysql.sock
pid-file                       = /opt/local/var/db/percona/mysql.pid

# MyISAM #
key-buffer-size                = 32M
myisam-recover                 = FORCE,BACKUP

# SAFETY #
max-allowed-packet             = 16M
max-connect-errors             = 1000000

# DATA STORAGE #
datadir                        = /opt/local/var/db/percona/

# CACHES AND LIMITS #
tmp-table-size                 = 32M
max-heap-table-size            = 32M
query-cache-type               = 0
query-cache-size               = 0
max-connections                = 10
thread-cache-size              = 16
open-files-limit               = 65535
table-definition-cache         = 1024
table-open-cache               = 2048

# INNODB #
innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 5M
innodb-flush-log-at-trx-commit = 2
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 12G

# LOGGING #
log-error                      = /opt/local/var/db/percona/mysql-error.log
log-queries-not-using-indexes  = 1
slow-query-log                 = 1
slow-query-log-file            = /opt/local/var/db/percona/mysql-slow.log

Как видите, я нигде не ссылаюсь на "opt / local / var / run / percona / mysqld.sock", и он все еще пытается найти там файл.

Я вижу только mysql.sock, указанный в / opt / local / var / db / percona

srwxrwxrwx   1 _mysql  _mysql         0 Jan 24 06:37 mysql.sock

Также см:

Sauds-MacBook-Pro:percona jini$ mysql_config --socket
/opt/local/var/run/percona/mysqld.sock

Почему он пытается найти «/opt/local/var/run/percona/mysqld.sock» и т. Д., Так почему я получаю эту ошибку?

ОБНОВЛЕНИЕ: Итак, если я создам символическую ссылку:

sudo ln -s /opt/local/var/db/percona/mysql.sock /opt/local/var/run/percona/mysqld.sock

все работает. Однако у меня до сих пор нет ответа на вопрос, почему у меня вообще не было файла mysqld.sock.

my.cnf могут быть расположены в нескольких разных местах, причем одни имеют приоритет над другими. смотреть на https://stackoverflow.com/questions/2482234/how-to-know-mysql-my-cnf-location где бы они ни были. Если у вас есть другой my.cnf где-то находится, он может извлекать конфигурацию оттуда.