У меня возникла большая проблема с подключением к mysql. Когда я запускаю:
/usr/local/mysql/bin/mysql start
У меня есть следующая ошибка:
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
У меня есть mysql.sock
в каталоге /var/mysql
.
В /etc/my.cnf
у меня есть:
[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
и /etc/php.ini
у меня есть:
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock
Я перезапустил apache с помощью sudo /opt/local/apache2/bin/apachectl restart
Но у меня все еще есть ошибка.
В противном случае, я не знаю, соответствует ли это, но когда я делаю mysql_config --sockets
, я получаю
--socket [/tmp/mysql.sock]
Если ваш файл my.cnf(обычно в папке /etc/mysql/ ) правильно настроен с помощью
socket=/var/lib/mysql/mysql.sock
вы можете проверить, работает ли mysql со следующей командой:
mysqladmin -u root -p status
попробуйте изменить свое разрешение на папку mysql. Если вы работаете локально, вы можете попробовать:
sudo chmod -R 755 /var/lib/mysql/
который решил это для меня
mysqld
.
Вы уверены, что вы установили mysql, а также сервер mysql.
Например, чтобы установить сервер mySql, я буду использовать yum или apt для установки инструмента командной строки mysql и сервера:
yum -y install mysql mysql-server (or apt-get install mysql mysql-server)
Включить службу MySQL:
/sbin/chkconfig mysqld on
Запустите сервер MySQL:
/sbin/service mysqld start
после этого установите пароль администратора MySQL:
mysqladmin -u root password 'new-password' (with the quotes)
Надеюсь, это поможет.
brew install mysql
sudo apt-get install mysql-server
тогда жизнь была хорошей
Быстрое обходное решение, которое сработало для меня: попробуйте использовать локальный IP-адрес (127.0.0.1) вместо "localhost" в mysql_connect(). Это "заставляет" php подключаться через TCP/IP вместо Unix-сокета.
localhost
и не получает 127.0.0.1
прежде чем даже попытаться подключиться?
Я получил следующую ошибку:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Пробовал несколько способов и, наконец, решил это следующим образом.
sudo gksu gedit /etc/mysql/my.cnf
изменен
#bind-address = 127.0.0.1
to
bind-address = localhost
и перезапущен
sudo /etc/init.d/mysql restart
он работал
Убедитесь, что вы используете mysqld: /etc/init.d/mysqld start
sudo service mysql start|restart
для Ubuntu.
Чтобы предотвратить возникновение проблемы, вы должны выполнить изящное завершение работы сервера из командной строки, а не отключать сервер.
shutdown -h now
Это остановит запущенные службы перед отключением компьютера.
Основываясь на Centos, дополнительный метод для его восстановления снова при запуске этой проблемы заключается в перемещении mysql.sock:
mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
service mysqld start
Перезапуск службы создает новую запись с именем mqsql.sock
Другим обходным решением является редактирование /etc/my.cnf и включение узла в раздел [клиент]
[client]
#password = your_password
host = 127.0.0.1
port = 3306
socket = /var/run/mysql/mysql.sock
И затем перезапустите службу mysql.
Этот обходной путь был протестирован в: Версия сервера: 5.5.25a-log Распределение источников
Как видно из многочисленных ответов здесь, существует множество проблем, которые могут привести к появлению этого сообщения об ошибке при запуске службы MySQL. Дело в том, что MySQL, как правило, скажет вам, что именно неправильно, если вы просто посмотрите в соответствующий файл журнала.
Например, на Ubuntu вы должны проверить /var/log/syslog
. Поскольку в этот файл также может входить множество других вещей, вы, вероятно, захотите использовать grep
для просмотра сообщений mysql и tail
для просмотра только последних. Все это может выглядеть так:
grep mysql /var/log/syslog | tail -50
Не слепо вносить изменения в свою конфигурацию, потому что кто-то сказал: "Это работало для моей системы". Выясните, что на самом деле не так с вашей системой, и вы получите лучший результат намного быстрее.
.cnf
. Что объясняет его. Теперь я могу перестать пробовать случайные вещи и заняться реальной проблемой. Благодарю.
Если все работает отлично, и вы только начали видеть эту ошибку, прежде чем делать что-либо еще, убедитесь, что вы не находитесь на диске:
df -h
Если объем, в котором создается mysql.sock, используется на 100%, MySql не сможет его создать, и это станет причиной этой ошибки. Все, что вам нужно сделать, это удалить то, что вам не нужно, например старые файлы журналов.
У меня была такая же проблема, и это было вызвано обновлением драйверов mysql при запуске сервера mysql. Я исправил его, просто перезапустив mysql и apache2:
sudo service mysql stop
sudo service mysql start
sudo service apache2 stop
sudo service apache2 start
mysql
не работал. Я запустил sudo service mysql start
после запуска sudo service mysql status
чтобы убедиться, что он не запущен.
sudo service mysql start
Это должно служить вам просто прекрасно. Возможно, вы изменили некоторые команды, которые повлияли на конфигурации mysql.
systemctl start mariadb.service
в Fedora 22 или RedHat 7. После этого можно установить пароль root.
В моем случае я использовал Centos 5.5. Я обнаружил, что проблема в том, что служба mysql была остановлена как-то. Поэтому я начал службу mysql с помощью команды:
/etc/init.d/mysqld start
Итак, глупая ошибка.
Я получил эту ошибку, когда задал задание cron для своего файла. Я изменил разрешения файла на 777, но он по-прежнему не работал у меня. Наконец, я получил решение. Может быть, это будет полезно для других.
Попробуйте выполнить эту команду:
mysql -h 127.0.0.1 -P 3306 -u root -p
Помните, что -h означает хост и -p означает порт.
-p
не означает порт , это означает пароль , вы перепутали его с -P
попробуйте с -h (host) и -P (порт):
mysql -h 127.0.0.1 -P 3306 -u root -p
Я получал ошибку, потому что я запускал MAMP, а мой файл .sock находился в другом месте. Я просто добавил символическую ссылку, в которой приложение подумало, что это должно указывать на то, где оно было на самом деле, и оно работает как шарм.
Есть много решений этой проблемы, но для моей ситуации мне просто нужно исправить DATE на машине/сервере (сервер Ubuntu 16.04).
i) Проверьте дату своего сервера и исправьте его.
ii) Запустите sudo /etc/init.d/mysql restart
Это должно начаться.
Это не дает прямого ответа на ваш вопрос, но его подмножество, а именно использование PythonAnywhere. Я продолжал сталкиваться с этим вопросом, когда искал исправления, поэтому я добавляю его здесь, надеясь, что это поможет другим в моей ситуации.
PythonAnywhere решил изменить имена хостов для подключения к базе данных, чтобы повысить эффективность и надежность, как подробнее здесь:
Официальное имя хоста, которое вы должны использовать для подключения к вашей учетной записи Экземпляр базы данных MySQL изменился с mysql.server на yourusername.mysql.pythonanywhere-services.com. Это обходит часть нашей инфраструктуры, которая начала показывать проблемы в последнее время недель, и он должен быть намного более эффективным и надежным, чем старый путь.
Следовательно, вам нужно будет обновить ваше имя хоста до значения, выделенного выше.
Для тех, чье решение не работает, попробуйте:
cd /etc/mysql
проверить, присутствует ли my.cnf
nano my.cnf
и убедитесь, что у вас есть только один адрес связывания следующим образом:
bind-address = 127.0.0.1
Если нет, это может быть проблемой, просто выйдите из nano и сохраните файл.
и service mysql start
обратите внимание, что если у вас нет nano (его текстовый редактор), просто установите его с помощью apt-get install nano
и один раз нажмите Ctrl + X для выхода, не забудьте сказать Y, чтобы сохранить и использовать тот же файл)
Если вы используете версию AVS (Amazon Web Services) Micro, то это проблема с памятью. Когда я бежал
mysql
с терминала он скажет
ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/run/mysqld/mysqld.sock' (111)
Итак, я попробовал следующее, и он просто потерпит неудачу.
service mysqld restart
После долгих поисков я обнаружил, что вам нужно создать файл подкачки для MySQL, чтобы иметь достаточно памяти. Инструкции перечислены: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html.
Затем я смог перезапустить mysqld.
Я также обнаружил, что это проблема с разрешениями. Я сравнивал файлы MySQL с рабочей установкой (как с Debian 6), так и с изменениями прав собственности (где mydatabase
- любая имеющаяся у вас база данных).
Собственность mysql:mysql
:
chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/*
Собственность mysql:root
:
chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld
Собственность mysql:adm
:
chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log*
вы всегда можете запустить сервер mysql, указав расположение файла mysql.sock с помощью параметра --socket
, например
mysql --socket=/var/mysql/mysql.sock
Это будет работать, даже если расположение файла сокета указано в другом месте в файле my.cnf.
CentOS 7, 64 бит. Свежая установка.
В моем случае ошибка состояла в том, что у меня не было подходящего MySQL-сервера и MySQL-клиента.
Используя yum
, я удалил mariadb
и mysql-community edition. Я загрузил rpm для клиента и сервера из официального сайта MySQL и установил сервер и клиент.
При установке сервера мне было показано сообщение о том, что пароль для учетной записи root для MySQL хранился в файле, который я мог просматривать с помощью sudo cat /root/.mysql_secret
.
Итак, после установки клиента и сервера, я проверил, работает ли MySQL (я думаю, что я перезагрузился до этого) с помощью команды sudo service mysql status
, и я получил результат.
Работа MySQL (2601) [OK]
Я вошел в MySQL, используя пароль из файла .mysql_secret: mysql -uroot -pdxM01Xfg3DXEPabpf
. Обратите внимание, что dxM01Xfg3DXEPabpf
- это пароль, указанный в файле .mysql_secret.
а затем введите следующую команду в приглашении mysql, чтобы изменить пароль root:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');
С тех пор все отлично работало.
Сегодня я столкнулся с этой проблемой. Ни один из этих ответов не дал исправления. Мне нужно было выполнить следующие команды (здесь https://stackoverflow.com/questions/4757589/how-to-enable-innodb-in-mysql) для запуска моей службы mysql:
sudo /etc/init.d/mysql stop
cd /var/lib/mysql/
ls ib_logfile*
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
... etc ...
/etc/init.d/mysql restart
Отчасти это было отмечено следующими ошибками в /var/log/mysql/error.log:
140319 11:58:21 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error.
140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB
140319 11:58:21 [ERROR] Aborting
Я также видел полную ошибку на диске, но только при запуске команд без sudo. Если проверка разрешений не удалась, она сообщает полный диск (даже если ваш раздел даже не близок к полной).
Это было достаточно для меня
sudo /etc/init.d/mysql restart
Добавление
--protocol=tcp
в список поддерживаемых вами графиков в вашем соединении.
Для меня - это был просто случай, когда MySQL долгое время загружался. У меня более 100 000 таблиц в одной из моих баз данных, и это в конечном итоге началось, но, очевидно, в этом случае требуется много времени.
У меня тоже была эта проблема при попытке запустить сервер, поэтому многие ответы здесь, которые просто говорят, чтобы запустить сервер, не работали. Первое, что вы можете сделать, это выполнить следующее, чтобы увидеть, есть ли какие-либо ошибки конфигурации:
/usr/sbin/mysqld --verbose --help 1>/dev/null
У меня появилась одна ошибка:
160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ...
160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled.
160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296'
160816 19:24:33 [ERROR] Aborting
Простой grep -HR "innodb-online-alter-log-max-size" /etc/mysql/
показал мне, какой именно файл содержит оскорбительную строку, поэтому я удалил эту строку из файла.
Затем, проверяя мой файл /var/log/mysql/error.log
, который у меня был:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 671088640 bytes!
160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error.
160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160816 22:46:46 [ERROR] Aborting
На основе этого вопроса принятое решение не сработает, потому что я даже не мог запустить сервер, поэтому я следил за тем, что некоторые из комментариев сказали и удалили мои файлы /var/lib/mysql/ib_logfile0
и /var/lib/mysql/ib_logfile1
.
Это позволило запустить сервер, и я смог подключать и выполнять запросы, однако, проверяя мой файл журнала ошибок, он быстро заполнился несколькими десятками тысяч таких строк:
160816 22:52:15 InnoDB: Error: page 1415 log sequence number 82039318708
InnoDB: is in the future! Current system log sequence number 81640793100.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
Исходя из предложения здесь, чтобы исправить это, я выполнил mysqldump и восстановил все базы данных (см. ссылку для нескольких других решений).
$ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql
$ mysql -u root -p < backup-all-databases.sql
Теперь все работает как ожидается.
/var/log/mysql/error.log
помогла в моем случае. Была [ERROR] Can't init tc log
который был быстро исправлен с помощью следующего ответа: dba.stackexchange.com/a/185006/163583
sudo service mysqld start
Работал для меня, я использую Centos
Я использовал 127.0.0.1 для -h вместо localhost, и все было в порядке. В другом случае было то, что было - ошибка выше.
Если кто-то ищет ошибку Intialization
Невозможно подключиться к базе данных "/var/run/mysql/mysql.sock"
При запуске civicrm и drupal просто сделайте ниже изменения в
settings.php и civicrm.settings.php
только в тех местах, где вы пытаетесь установить соединение db
localhost до 127.0.0.1 # локальная установка
У меня была эта проблема. после дня проверки, наконец, у меня есть ответ. Файл mysql.sock создается, когда MariaDB запускается и удаляется при завершении работы MariaDB. Он не будет существовать, если MariaDB не работает. возможно, вы не установили MariaDB. ВЫ МОЖЕТЕ ПОЛУЧИТЬ ИНСТРУКЦИЮ НИЖЕ: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 ЛУЧШИЙ
Попробуйте выполнить следующую команду:
sudo /etc/init.d/mysql start
Я удалил файл mysql.sock, и он сработал. Ввод прав на него вообще не работал. Ни перезапуск, ни другое...
У меня была эта ошибка сокета, и это в основном сводилось к тому, что MySQL не работал. Если вы запустите новую установку, убедитесь, что вы установили 1) системный пакет и 2) установщик панели (mysql.prefPane). Установщик панели позволит вам перейти к вашим системным настройкам и открыть MySQL, а затем запустить экземпляр.
Обратите внимание, что при новой установке мне понадобился reset мой компьютер, чтобы изменения вступили в силу. После перезагрузки я получил новый экземпляр и смог открыть соединение с localhost без проблем.
Также следует отметить, что я, по-видимому, имел предыдущие версии MySQL, но удалил панель, что упростило получение экземпляра MySQL для пользователей Mac.
Хорошая ссылка для этого процесса переустановки: http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/
Измените файл конфигурации /etc/mysql/my.cnf
:
[client]
host = 127.0.0.1
port = 3306
socket =/var/run/mysql/mysql.sock