помилка: 'Не вдається підключитися до локального сервера MySQL через сокет' /var/run/mysqld/mysqld.sock '(2)' - відсутні /var/run/mysqld/mysqld.sock


322

Моя проблема почалася зі мною, що я більше не зможу ввійти як root під час встановлення mysql. Я намагався запустити mysql без включених паролів ... але кожного разу, коли я запускав команду

# mysqld_safe --skip-grant-tables &

Я ніколи не повернув би швидке повернення. Я намагався дотримуватися цих інструкцій, щоб відновити пароль .

Екран виглядає приблизно так:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

і я не отримую підказки починати вводити команди SQL для скидання пароля.

Коли я вбиваю його, натискаючи CTRL+ C, я отримую таке повідомлення:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Якщо я повторюю команду і залишаю її досить довго, я отримую наступну серію повідомлень:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Але тоді, якщо я спробую увійти як root, виконуючи:

# mysql -u root

Я отримую таке повідомлення про помилку:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Я перевірив, і /var/run/mysqld/mysqld.sockфайл не існує. Папка є, але не файл.

Також я не знаю, чи допомагає це чи ні, але я побіг find / -name mysqldі придумав:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Я новачок у Linux та MySQL, тому не знаю, нормально це чи ні. Але я включаю цю інформацію на випадок, якщо вона допоможе.

Нарешті я вирішив видалити та перевстановити mysql.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Після перевстановлення всіх пакетів у тому ж порядку, що і вище, під час встановлення phpmyadmin я отримав таку ж помилку:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Тож я знову спробував видалити / перевстановити. Цього разу, після видалення пакунків, я також вручну перейменував усі файли та каталоги mysql mysql.badу відповідні місця.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Потім я спробував перевстановити mysql-serverі mysql-clientзнову. Але я помітив, що це не підказує мені пароль. Чи не слід запитувати пароль адміністратора?


У мене така ж проблема. Я вирішив це тільки зараз. stackoverflow.com/questions/18150858/…
robert


вирішено просто перезавантажити сервер, а потім перезапустити сервіс mysql
bowpunya

@Anto Це не дублікат. Цього /var/run/mysqld/mysqld.sockнемає. Проблема, яку ви пов’язали, має цей файл.
motorbaby

Жодна з відповідей тут чи деінде я не могла знайти свою проблему. Оскільки це був новий проект, я перейшов на PostgreSQL і він просто працює! :-)
Джеймс Бредбері

Відповіді:


194

Щоб знайти усі файли сокетів у вашій системі:

sudo find / -type s

У моїй серверній системі Mysql розетка була відкрита /var/lib/mysql/mysql.sock

Як тільки ви знайдете, де відкривається сокет, додайте або відредагуйте рядок у файл /etc/my.cnf зі шляху до файлу сокета:

socket=/var/lib/mysql/mysql.sock

Іноді сценарій запуску системи, який запустив виконуваний командний рядок, вказує прапор --socket=path. Цей прапор може замінити місце my.cnf, і це призведе до того, що сокет не буде знайдений там, де файл my.cnf вказує, що він повинен бути. Потім, коли ви спробуєте запустити клієнт командного рядка mysql, він прочитає my.cnf, щоб знайти сокет, але він не знайде його, оскільки він відхиляється від того, де його створив сервер. Отже, якщо вам не байдуже, де знаходиться сокет, просто змінити my.cnf на відповідний має працювати.

Потім зупиніть процес mysqld. Як це зробити, буде залежати від системи.

Якщо ви супер користувач в системі Linux, спробуйте одне з наступних, якщо ви не знаєте конкретного методу, який використовує ваша установка Mysql:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Деякі системи не налаштовані на елегантний спосіб зупинити mysql (або чомусь mysql не відповідає), і ви можете змусити припинити mysql будь-яким:
    • Один крок: pkill -9 mysqld
    • Два кроки (найменш переважні):
      • Знайдіть ідентифікатор процесу mysql з будь-яким pgrep mysqlабоps aux | grep mysql | grep -v grep
      • Припустимо, що ідентифікатор процесу 4969закінчуєтьсяkill -9 4969

Після цього ви, можливо, захочете знайти pid-файл /var/run/mysqld/і видалити його

Переконайтеся, що дозволи на вашому сокеті такі, що будь-який користувач mysqld працює, як він може його читати / записувати. Простий тест - відкрити його для повного читання / запису та побачити, чи працює він ще:

chmod 777 /var/run/mysqld/mysqld.sock

Якщо це вирішує проблему, ви можете налаштувати дозволи та права власності на сокет залежно від налаштувань безпеки.

Крім того, каталог, в якому знаходиться сокет, повинен бути доступний користувачеві, який здійснює процес mysqld.


15
Будь ласка, не рекомендую використовувати kill -9; Є кілька способів, які слід спробувати, перш ніж до цього дійти.
Ігнасіо Васкес-Абрамс

@dot запустити це у кореневому файлі 'find. -ім'я mysqld.sock '. Я бачив файл сокета в інших місцях, ніж / var / run. Як тільки ви знайдете його, можливо, вам доведеться відредагувати файл my.cnf, щоб вказати, де він знайдений.
Рей

@ray, я спробував запустити оригінальну команду по-іншому (я знайшов конкретну публікацію для ubuntu на іншому сайті ..). Ось команди, які я виконував: "sudo service mysql stop" і "sudo mysqld --skip-grant-table". Після виконання другої команди я отримую таку помилку: "InnoDB: Не вдається заблокувати ./ibdata1, помилка: 11". Я не можу знайти цей файл ./ibdata1 ... InnoDB: Перевірте, чи немає у вас ще іншого файлу mysqld
точка

2
@dot запустити ps -aux | grep mysqldі побачити, чи запущені інші mysql процеси
Рей

@ray. я вириваю волосся чоловікові. Я вирішив підірвати mysql і спробувати ... відзначте мій оновлений пост.
точка

251

Спробуйте цю команду,

sudo service mysql start

+1 my.cnf вказував на правильні каталоги, служба mysql померла
wruckie

Я спробував прийняту відповідь, але не зміг знайти mysql.sock, це працювало для мене. Дякую
Джованні Афонсо

1
Мені довелося скористатисяsudo service mysqld start
Гавін Міллер

10
sudo apt-get install mysql-serverякщо у вас це вже не встановлено :)
aimme

17
Якщо ви потрапили в цю проблему, будь-ласка, запустіть цю просту команду ПЕРШЕ перед тестуванням інших речей, це займе лише секунду, і якщо сервер просто не працює, і добре після запуску, це просто означає, що він не не автозапустити, що б тоді було актуальною проблемою для вирішення.
Лізардкс

137

Ця помилка виникає через кілька установок mysql. Виконайте команду:

ps -A|grep mysql

Вбийте процес, використовуючи:

sudo pkill mysql

а потім запустіть команду:

ps -A|grep mysqld

Також вбийте цей процес, запустивши:

sudo pkill mysqld

Тепер ви повністю налаштовані, просто запустіть такі команди:

service mysql restart
mysql -u root -p

Знову дуже добре працюю mysql


Гей, люди, я бігав по всій мережі, намагаючись виправити це. Моя проблема полягала в тому, що я намагався налаштувати докер. Я хотів, щоб він використовував дані даних mysql, що раніше використовувався mysql поза докером ... що команда ps була найкращою!
Майкл

3
Після роботи в Інтернеті протягом майже 4 годин, нарешті, це спрацювало. Повинен відповісти: +1:
Шивам Гаур,

4
Не вдалося виконати роботу для mysql.service, оскільки процес управління завершився кодом помилки. Детальніше див. "Systemctl status mysql.service" та "journalctl -xe".
Джон Джо

1
Не вдалося виконати роботу для mysql.service, оскільки процес управління завершився кодом помилки. Детальніше див. "Systemctl status mysql.service" та "journalctl -xe".
Адіб Аруй

Tnx, ти економиш мій час.
Олександр Атанасов

41

Рішення простіше.

  1. По-перше, ви повинні знайти (у Терміналі з "sudo find / -type s"), де знаходиться ваш mysql.sockфайл. У моєму випадку це було в/opt/lampp/var/mysql/mysql.sock
  2. Запустіть термінал та видачі. sudo Nautilus
    Це запускає ваш Менеджер файлів із привілеями супер користувача
  3. З Nautilus перейдіть до місця, де знаходиться ваш mysql.sockфайл
  4. Клацніть правою кнопкою миші на файл і виберіть Зробити посилання
  5. Перейменувати файл Посилання на mysqld.sockте праву кнопку миші на файл і Cut так чи
  6. Перейдіть до /var/runі створіть папку під назвою mysqldта введіть її
  7. Тепер клацніть правою кнопкою миші та вставте файл посилань
  8. Вуаля! Тепер у вас буде mysqld.sockфайл за адресою /var/run/mysqld/mysqld.sock:)

4
Як ви знайдете файл mysql.sock? Я спробував знайти / -name 'mysql.sock', але нічого не повертається.
Метью Лок

2
@MatthewLock Спочатку переконайтеся, що функція mysql запущена (від "ps aux | grep mysql"), інакше не з'явиться жоден mysql.sock. По-друге, використовуйте "sudo find / -type s", який дає вам всі сокети у вашій системі, щоб знайти mysql.sock
narengi

35
Що робити, якщо висновок sudo find / -type sне містить жодного mysql.sock?
jeff

1
Це працює. Але я поняття не маю, чому ці розробники ніколи не займаються цією роботою за останні роки?
Yi Jiang

2
Якщо болісно дістатись, де знаходиться mysql.sock через "find / -type s" - спробуйте скористатися командою "mysql_config --socket". Ви можете встановити його за допомогою sudo apt - get install libmysqlclient-dev
alexche8

26

Просто потрібно запустити MySQL Service після встановлення:

Для Ubuntu:

sudo service mysql start;

Для CentOS або RHEL:

sudo service mysqld start;

Спершу перевірте це sudo systemctl status mysql.serviceі sudo systemctl start mysql.service. Це працює для мене
Byeongin Yoon

16

На Ubuntu є помилка з MySQL 5.6 та 5.7, var/run/mysqld/яка зникає, коли служба MySQL зупиняється або перезавантажується. Це заважає MySQL взагалі працювати. Знайдено це рішення, яке не є ідеальним, але принаймні воно запускається після зупинки / перезавантаження:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

дякую - виправили це для мене, я повинен переробити каталог і скинути право власності на кожен перезапуск служби mysql - не вдалося знайти помилку, про яку повідомлялося офіційно, або я б опублікував посилання тут :)
djoe

1
Я цього не пробував, але, можливо, це допоможе вам: Створіть новий файл /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details і тоді, d /var/run/mysqld 0755 mysql mysql - після перезавантаження, mysql повинен запуститися нормально. Це з bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , коментар 3. Якщо у вас виникли проблеми з MySQL 5.7, будь ласка, прокоментуйте Launchpad. Чим більше користувачів, які звертаються з проблемою, тим більше уваги вона приверне.
motorbaby

Працювало для мене ... довелося використовувати mysql як ім’я користувача, а не mysqld, хоча
Еван Парсонс

Додавання рядка до /etc/tmpfiles.d/mysql.confкоментаря motorbaby вирішило цю проблему для мене. На ОС Centos 7 та використання mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34

Це вирішило для мене проблему.
шиката

14

Гаразд, просто скопіюйте та вставте ці коди. Це потрібно зробити в терміналі, всередині сервера, коли ваша база даних mysql не встановлена ​​належним чином, і коли ви отримуєте цю помилку: "Неможливо підключитися до локального сервера MySQL через сокет" / var / run / mysqld / mysqld.sock '(2)'.

Зупинити MySql

sudo /etc/init.d/mysqld stop

Перезапустіть його або запустіть

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Зробіть таке посилання та відправте його в систему

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Запустіть безпечну установку, яка керує всім процесом, який потрібно виконати для налаштування mysql

/usr/bin/mysql_secure_installation

Я отримую таку ж Can't connectпомилку, коли я намагаюся виконувати вище команди.
чімлінг

Просто щось, що я виявив, для тих, хто працює ubuntu. Якщо ви запустите mysqld за допомогою /etc/init.d/mysqld start, у будь-якому випадку ви зіткнетеся з цією проблемою. Використовуйте замість служби mysql start і це буде добре. Нагнітаючи, але я зрозумів це врешті-решт.
Адам Короткий

11

Я зіткнувся з такою ж помилкою і виявив, що це пов’язано з оновленням пакетів, тому після перезавантаження системи я усунув помилку.

Я думаю, що через бібліотеки / пакети sql оновлення сталася помилка, тому спробуйте це, якщо ви робите оновлення :)


1
Я зробив це після перевстановлення (або оновлення), і тепер це працює. Немає більше жодного повідомлення. Дякую!
wraithie

8

Причин для цієї проблеми є багато, але іноді просто перезавантажте сервер mysql, це вирішить проблему.

sudo service mysql restart

7

Використання XAMPP в ubuntu:

  1. Створіть папку під назвою mysqld всередині / var / run каталогу. Ви можете досягти цього за допомогою команди sudo mkdir /var/run/mysqld.

  2. Створіть символічне посилання на файл mysql.sock, який створюється сервером XAMPP при його запуску. Ви можете використовувати команду sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Примітка. Файл mysql.sock створюється під час запуску та видалення сервера при зупинці сервера, тому іноді створене вами посилання може виявитися розірваним, але воно має працювати до тих пір, як ви запустили сервер за допомогою будь- sudo /opt/lampp/lampp startякого або будь-якого іншого засоби.

  1. Запустіть сервер, якщо він ще не працює, і спробуйте виконати свою програму ще раз.

Удачі! Я сподіваюсь, що цього разу ви уникнете.


@MohsinKhan перейдіть до localhost / phpmyadmin та імпортуйте звідти базу даних
Роберт Одоч

6

Відповідь кроку завантаження користувача працював для мене. Іноді потрібно редагувати файл у /etc/mysql/my.cnfрядку додати клієнту

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Це дає мені:mysql: unknown variable 'Host=127.0.0.1'
Splaktar

@Splaktar: є помилка друку. Hostпотрібно мати малі літери, hostі це спрацює. Також це рішення спрацювало для мене.
Мохаммед Фейсал

Блискуче - це працює для мене та мого докерського середовища - мені довелося лише скорегувати ip, який є в моєму випадку контейнером docker mysql ip 172.17.xx
InforMedic

6

* Помилка: 'Не вдається підключитися до локального сервера MySQL через сокет' /var/run/mysqld/mysqld.sock '(2)'

рішення

нарешті, видаліть та перевстановіть mysql. **

  • sudo apt-отримати видалити mysql-сервер
  • sudo apt-отримати видалити mysql-client
  • sudo apt-отримати видалити mysql-звичайний
  • sudo apt-отримати видалити phpmyadmin

потім знову встановити до

  • sudo apt-get install mysql-server-5.6

Після цієї операції буде використано 164 Мб додаткового дискового простору.

  • Ви хочете продовжити? [Y / n] Y натисніть YES для завершення встановлення

...... .......

  • Нарешті ви отримаєте ці рядки….

    Налаштування libhtml-template-perl (2.95-1) ...

    Налаштування mysql-common-5.6 (5.6.16-1 ~ exp1) ... Обробка тригерів для libc-bin (2.19-0ubuntu6) Обробка тригерів для ureadahead (0.100.0-16) ...

  • І потім

    root @ ubuntu1404: ~ # mysql -u root -p (для кожного першого пароля, який слід використовувати)

  • Введіть пароль:

  • Примітка. Введений пароль повинен бути таким самим, як і пароль встановлення mysql (наприклад, .root, система, адміністратор, rahul тощо)

    Потім введіть

  • ВИКОРИСТИТИ rahul_db (назва бази даних);

Дякую.**


будь ласка , поліпшити якість відповіді
Мо

Це працювало для мене завдяки встановленим кількома версіями mysql. також видалити mysql-server-5.6/5.5, mysql-client-5.6/5.5. Дякую!
Luuk Skeur

отримано E: Package 'mysql-server-5.6' has no installation candidate, його немає в Ubuntu 18.04
juliocesar

6

Переконайтеся, що ваш недоступний файл файлу сокета такий самий, як "/var/run/mysqld/mysqld.sock", інакше змініть шлях як ваш. Зупиніть mysqld

$ sudo /etc/init.d/mysqld stop

Якщо процес все-таки запущений;

$ sudo pkill -9 mysqld

Видаліть каталог mysql, де буде створено сокет. Для мене це не дозволили видалити, тому довелося примусово видаляти.

$ sudo mkdir -p /var/run/mysqld

Встановіть право власності на dirctory

$ sudo chown mysql:mysql /var/run/mysqld

Запустити mysql

$ sudo /etc/init.d/mysql start

Спроба підключити mysql

$ sudo mysql -u dbuser -p

Так, таку ж відповідь я дав 14 лютого 1919 року о 11:56 (див. Нижче)
Інго

Ви рятувальник життя.
Сахіб Хан

5

Я думаю, ваш сервер MySQL не запустився. Тому запустіть сервер, використовуючи одну з наступних команд.

#services mysql start

або

#/etc/init.d/mysql start

5

Тимчасове рішення

Можливо, хтось стикається з цією проблемою. Я використовую Mysql Workbench на Ubuntu 14 і отримав цю помилку.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Знайдіть файл сокета, запустивши sudo find / -type s, в моєму випадку це було/run/mysqld/mysqld.sock

Отже, я щойно створив посилання на цей файл у tmpкаталозі.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

Як ви бачите, розташування файлу знаходиться в /tmpпапці, і він точно буде видалений. Ви можете змінити .sockрозташування файлу. Дивіться відповідь @ user3002884.
Білал

Я знаю, я щойно доповнював вашу відповідь, щоб інші користувачі до цього знали, що рішення є тимчасовим, як папка
Alex Burdusel

Ти врятував мені життя :)
Mashpy Rahman

4

ви можете знайти mysqld.sockв , /var/run/mysqldякщо ви вже встановили mysql-server наsudo apt-get install mysql-server


4

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

в /etc/my.cnfдодати ці рядки:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

І перезапустіть службу за допомогою: service mysql restart

це працювало для мене


4

Про це вже згадувалося кілька разів, але для мене це спрацювало відразу:

перезапуск служби mysql


Цікаво, чим це відрізняється від використання простої команди "mysql"
luminol

3

У моєму випадку працювали два mysqld-процеси .. вбили необов'язкові процеси, використовуючи pkill -9 mysqld


Мені потрібно було додати процес вбивства "sudo".
повідомлення

3

Якщо у вашій системі багато баз даних і таблиць, і якщо ви innodb_file_per_tableвстановили в my.cnf, можливо, у вашого сервера mysql не вистачало відкритих об'єктів / файлів (а точніше дескрипторів для цих об'єктів) Встановіть нове максимальне число з

open-files-limit = 2048

і перезапустити mysql. Такий підхід може допомогти, коли сокет взагалі не створений, але насправді це може не бути справжньою проблемою, є основна проблема.


2

У мене щойно була ця проблема на Ubuntu 14.10

Виявляється, що mysql-server більше не було встановлено (якимось чином його було видалено), але я не міг просто встановити його, оскільки були деякі зламані пакети та проблеми / конфлікти залежностей.

Врешті-решт мені довелося перевстановити mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server


2

Моє рішення;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

Я змінив порт. Це працює для мене. Можна написати інший порт. Приклад 3355


2

Навіщо отримувати цю помилку

Я отримав нові оновлення бібліотек mysql, тому я оновив свою ОС Kubuntu після цього, отримавши ці помилки.


Команди, які я намагався, і як я це виправляв.

MySql-сервер працює правильно, але коли я намагався підключити його надання

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

я перевірив /var/run/mysqld/mysqld.sock'. цей каталог. Мої файли не існували.

Я також спробував з'єднати ці команди, але у мене це не вийшло.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Після того, як витрачав раунд близько 2 годин, я знайшов рішення

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Після цього для мене все виправлено.


Це допомогло мені виправити проблему. Я не розумію, як це пов’язано з проблемою, що
склалася у

1

Зміна hostна127.0.0.1 працював для мене.

Відредагуйте файл /etc/mysql/my.cnfі додайте до розділу вказаний рядок нижче:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Після того, як ви закінчите з цим. Виконайте таку команду.

sudo service mysql start

Цей мій друг, допоміг мені :)
Бхаргав Нанекальва

@NBhargav Я такий щасливий, що ти міг би вирішити проблему ур .. Ура, приятель .. 😇😇
Дуліт Де Коста

1

Я також перевірив конфігурацію mysql. Я зіткнувся з цією проблемою зі своїм власним сервером, але я був занадто поспішним і неправильно налаштував розмір innodb_buffer_pool_size для своєї машини.

innodb_buffer_pool_size = 4096М

Зазвичай працює до 2048 року, але, мабуть, у мене немає пам'яті, необхідної для підтримки 4 концертів.

Я думаю, це може трапитися і з іншими налаштуваннями конфігурації mysql.


1

У мене була схожа проблема на CentOS VPS. Якщо MySQL не запускається або продовжує збої відразу після його запуску, спробуйте виконати наступні дії:

1) Знайдіть файл my.cnf (мій знаходився в /etc/my.cnf) та додайте рядок:

innodb_force_recovery = X

замінивши X на число від 1 до 6, починаючи з 1, а потім збільшуючи, якщо MySQL не запуститься. Якщо встановити 4, 5 або 6, можна видалити ваші дані, тому будьте обережні і прочитайте http://dev.mysql.com/doc/refman/5.7/uk/forcing-innodb-recovery.html раніше.

2) Перезавантажте сервіс MySQL. Запускається лише SELECT, і це нормально в цей момент.

3) Вивантажуйте всі ваші бази / схеми за допомогою mysqldump по черзі, не стискайте звалища, тому що вам доведеться розпакувати їх пізніше.

4) Перемістіть (або видаліть!) Лише каталоги bd всередині / var / lib / mysql, зберігаючи окремі файли у корені.

5) Зупиніть MySQL, а потім не коментуйте доданий рядок у 1). Запустіть MySQL.

6) Відновіть всі Bd, вкладені в 3).

Удачі!


1

Спробуйте виконати наступне у вікні терміналу:

sudo mysql

Як тільки це дозволить вам увійти, ви можете створити нового користувача та надати привілеї, які вам потрібні, у конкретній базі даних, до якої вони потребують доступу.

Mysql 5.7 змінив деякі речі та за замовчуванням використовує плагін auth_socket (на відміну від mysql_native_password) для root, щоб захистити обліковий запис від злому. Ви можете змінити це, встановивши поле плагіна для root, але якщо у вас немає дуже вагомих причин, ви, ймовірно, не повинні обійти захист. Особливо, коли sudo mysqlпростіше, ніжmysql -u root -p все-таки.

Я дізнався цю інформацію - про всі місця - з довідкового сайту Raspberry Pi . Працюючи як шарм після того, як Lubuntu 18.04 роздратував біса на пару годин.


1

Спочатку створіть dir / var / run / mysqld

з командою:

mkdir -p /var/run/mysqld

потім додайте риги в реж

chown mysql:mysql /var/run/mysqld

після цього спробуйте

mysql -u root

1

У мене було саме таке питання. Пробившись протягом години, я знайшов спосіб її виправити без перевстановлення mysql-common, mysql-client, mysql-сервера.

Перш за все, перейдіть до "/ var / run / mysqld". Ви побачите, що mysql.sock не існує. Просто видаліть весь каталог mysqld і відтворіть його та надайте йому необхідні привілеї.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Тепер, вбити процес mysql повністю. Можливо, воно покаже вам "очікування очищення сторінки" під час виконання команди "/etc/init.d/mysql status" навіть після вимкнення служби.

Щоб повністю закрити послугу, використовуйте

# pkill -9 mysqld

Після того, як процес буде вбито, спробуйте запустити його знову, використовуючи

# /etc/init.d/mysql start

І ви побачите, що це працює добре! А також у цьому не буде жодної проблеми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.