Під час підключення до mysql я отримую таку помилку:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Чи є рішення для цієї помилки? Що може бути причиною цього?
Під час підключення до mysql я отримую таку помилку:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Чи є рішення для цієї помилки? Що може бути причиною цього?
Відповіді:
Ви підключаєтесь до "localhost" чи "127.0.0.1"? Я помітив, що при підключенні до "localhost" використовується роз'єм розетки, але при підключенні до "127.0.0.1" використовується роз'єм TCP / IP. Ви можете спробувати використати "127.0.0.1", якщо роз'єм сокета не ввімкнено / не працює.
/etc/hosts
файл у моєму контейнері докера, показав мені ім'я хоста MySql mysql
. Використання цього ж імені хоста в моїй конфігурації підключення вирішило проблему.
Переконайтеся, що ваша служба mysql працює
service mysqld start
Потім спробуйте одну з наступних дій:
(якщо ви не встановили пароль для mysql)
mysql -u root
якщо ви вже встановили пароль
mysql -u root -p
service mariadb start
тому що mariadb.org/debian-9-released-mariadb-mysql-variant
Якщо ваш файл my.cnf (як правило, у папці тощо) правильно налаштовано
socket=/var/lib/mysql/mysql.sock
ви можете перевірити, чи виконується mysql, виконавши таку команду:
mysqladmin -u root -p status
спробуйте змінити свій дозвіл на папку mysql. Якщо ви працюєте локально, ви можете спробувати:
sudo chmod -R 777 /var/lib/mysql/
що вирішило це для мене
Сервер MySQL не працює, або це не місце розташування його сокетного файлу (перевірте my.cnf).
Швидше за все mysql.sock
, не існує в Росії /var/lib/mysql/
.
Якщо ви знайдете той самий файл в іншому місці, тоді позначте його:
Наприклад: у мене це є /data/mysql_datadir/mysql.sock
Переключити користувача на mysql та виконати, як зазначено нижче:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
Це вирішило мою проблему
Якщо ви перебуваєте на останній RHEL, вам може знадобитися запустити mariadb (mysql db з відкритим кодом) замість mysql db:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
Тоді ви зможете отримати доступ до mysql звичайним способом:
mysql -u root -p
mariadb-server
та mariadb
не забудьте запустити, mysql_secure_installation
щоб очистити деякі небезпечні параметри за замовчуванням.
У моєму випадку я перемістив файл сокета в інше місце всередині /etc/my.cnf
від /var/lib/mysql/mysql.sock
до/tmp/mysql.sock
Навіть після перезапуску служби mysqld я все одно бачу повідомлення про помилку при спробі підключення.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Проблема полягає в тому, як налаштований клієнт. Запущена діагностика фактично покаже правильний шлях розетки. напрps aux | grep mysqld
Працює:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
Не працює:
mysql -uroot -p
mysql -uroot -p -hlocalhost
Ви можете вирішити цю проблему, додавши ту саму лінію сокета в [client]
розділ всередині mysql config.
Просто відредагуйте /etc/my.cnf
Додати наступні рядки доmy.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Перезапустіть mysql та підключіться знову
mysql -u користувача -p база даних паролів -h хост;
Перевірте, чи працює ваша служба mysqld чи ні, якщо її не запустити, запустіть службу.
Якщо ваша проблема не вирішена, знайдіть /etc/my.cnf
і змініть наступні зміни, де ви бачите рядок, що починається з socket
. Створіть резервну копію цього файлу перед цим оновленням.
socket=/var/lib/mysql/mysql.sock
Перейти
socket=/opt/lampp/var/mysql/mysql.sock -u root
MariaDB, розроблена спільнотою MySQL, стала спільною реалізацією MySQL у багатьох дистрибутивах.
Отже, спочатку слід почати,
$ sudo systemctl start mariadb
Якщо це не вдалося, спробуйте,
$ sudo systemctl start mysqld
Потім для запуску mysql,
$ mysql -u root -p
На сьогоднішній день у Fedora пакет називається mariadb
І в Ubuntu він називається mariadb-server
.
Тому вам, можливо, доведеться встановити його, якщо його ще не встановлено у вашій системі.
Переконайтеся, що у вас залишилось достатньо місця /var
. Якщо демон Mysql не в змозі написати додаткову інформацію на диск, сервер mysql не запуститься, і це призведе до помилкиCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Подумайте про використання
expire_logs_days = 10
max_binlog_size = 100M
Це допоможе вам зменшити використання диска.
innodb_buffer_pool_size
в my.cnf
. Визначення такої малої вартості, як innodb_buffer_pool_size = 50M
хороший тест для відмови від цієї гіпотези;)
Ось що для мене спрацювало:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
Перевірте, чи працює інша служба mysql.
Переконайтеся, що ви запустили сервер:
mysql.server start
Потім підключіться з користувачем root:
mysql -uroot
Якщо ваш mysql раніше працював і раптово зупинився, просто "перезавантажте" сервер.
З цією проблемою стикалися в моєму CentOS VPS .->
Постійно отримував
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
Перепробував усі методи, нарешті перезапустивши сервер, виправили проблеми ->
shutdown -r now
Сподіваюся, це допомагає !!
якщо ви змінюєте файли в / var / lib / mysql [наприклад, скопіюйте або замініть це], ви повинні встановити власника файлів на mysql, це так важливо, якщо перезапуск mariadb.service був помилковим
chown -R mysql: mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
Будь ласка, переконайтесь, що ви встановили MySQL-сервер правильно, я зустрічався з цією помилкою багато разів, і я думаю, що налагодження з сокета складно, я маю на увазі, що може бути легше перевстановити його.
Якщо ви використовуєте CentOS 7, ось правильний спосіб його встановлення:
Перш за все, додайте джерело спільноти mysql
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Потім ви можете встановити його yum install mysql-community-server
Почніть його з systemctl: systemctl start mysqld
Моя проблема полягала в тому, що я успішно встановив mysql і він працював чудово.
Але одного дня сталася та сама помилка.
Не вдається підключитися до локального сервера MySQL через сокет '/var/lib/mysql/mysql.sock' (2)
І жодного файлу mysql.sock не існувало.
Це забруднення вирішило мою проблему, і mysql знову запустився:
Увійдіть як корінь:
sudo su -
Виконати:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
Тест як корінь:
mysql -u root -p
mysql має бути запущений.
Я сподіваюся, що це може допомогти і комусь іншому.
Зауважте, що, хоча mysql читає інформацію про розташування сокетфайлу з файлу my.cnf, програма mysql_secure_installation, здається, не робить це правильно часом.
Отже, якщо ви схожі на мене і перетасуєте речі під час встановлення, ви можете потрапити в ситуацію, коли ви зможете підключитися до бази даних за допомогою mysql просто чудово, але річ неможливо захистити (не використовуючи цей скрипт у будь-якому випадку).
Щоб виправити це, пропозиція від sreddy працює добре: зробіть софтпосилання, звідки сценарій очікував би сокета до того, де він є насправді. Приклад:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(Я використовую / tmp / як місце за замовчуванням для розеток)
Один із способів відтворення цієї помилки: Якщо ви мали намір підключитися до іноземного сервера, але замість цього підключитись до неіснуючого локального:
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
Тому вам потрібно вказати хост так:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
Це може бути дурним пропозицією, але переконайтеся, що на 100% впевненість, що ваш БД все ще розміщений у localhost. Наприклад, якщо мережевий адміністратор обрав (або змінив) хостинг Amazon DB, вам знадобиться саме це ім'я хоста!
У моєму випадку я імпортував нову базу даних, і після цього знову не зміг підключитися. Нарешті я зрозумів, що це космічна проблема.
Таким чином, ви можете видалити останню базу даних і розширити ваш жорсткий диск, або що я зробив, відновив знімок моєї віртуальної машини.
Про всяк випадок, якщо хтось вважає це корисним
Це проблема, якщо у вас не вистачає місця на диску. Рішення - звільнити деякий простір від жорсткого диска.
Будь ласка, прочитайте докладніше, щоб отримати пояснення:
Якщо ви працюєте з MySQL в LINUX, перевірте вільний простір жорсткого диска за допомогою командного диска безкоштовно:
df
якщо ви отримуєте щось подібне:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
Тоді це проблема і тепер у вас є рішення!
Оскільки mysql.sock хоче бути створений у папці mysql, яка майже завжди знаходиться під кореневою папкою, не може досягти цього через відсутність місця.
Якщо ви періодично даєте команду ls під каталогом mysql (у openSUSE 11.1 знаходиться в / var / lib / mysql), ви отримаєте щось на зразок:
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
Файл mysql.sock з’являється та зникає часто (потрібно спробувати виділити ls, щоб потрапити на екземпляр із файлом mysql.sock у папці).
Це викликано недостатньою кількістю дискового простору.
Я сподіваюся, що я допоможу деяким людям !!!! Дякую!
Спробуйте спочатку 2, 3 рішення. Помилка is style popup & Якщо ви не можете знайти/var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
Перевірте місце в / var /
df
Якщо каталог заповнений, видаліть кілька непотрібних файлів / каталогів
rm /var/cache/*
Можливо, ваше питання зараз буде відсортовано.
Якщо ви знаходитесь в оболонці sf.net , спробуйте:
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
Змініть {LETTER} та {GROUP ID}, як показано у вашій базі даних MySQL профілю адміністратора проекту.