Direktori mysqld_safe '/ var / run / mysqld' untuk file socket UNIX tidak ada

188

Saat memulai server mysql 5.7.17 menggunakan mysqld_safe, terjadi kesalahan saat ini.

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Bagaimana memperbaikinya ?

Rajadip
sumber

Jawaban:

507

Tampaknya aneh bahwa direktori ini tidak dibuat saat instalasi - apakah Anda secara manual mengubah jalur file socket di my.cfg?

Sudahkah Anda mencoba membuat direktori ini sendiri, dan memulai kembali layanan?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
Matt Clark
sumber
2
Tidak, saya belum melakukan perubahan apa pun secara manual. Saya akan mencoba ini dengan membuat direktori. Terima kasih atas sarannya
Rajadip
14
Ini terjadi pada mysql 5.7. Ketika Anda menghentikan layanan mysql / var / run / mysqld dihapus dan diciptakan kembali ketika Anda memulai lagi layanan.
Capy
2
Harus menggunakan sudo untuk keduanya
Kasun Rajapaksha
1
@Capy - terbalik - @Matt Clark - Anda silakan mengedit jawaban Anda untuk memasukkan informasi bahwa meskipun DIR mungkin telah dibuat tetapi itu akan dihapus jika kami menjalankan - $ sudo /etc/init.d/mysql stop, terima kasih
Rohit Dhankar
jika Anda masih mendapatkan kesalahan yang sama mengikuti langkah-langkah ini CATATAN yang sudoakan menyelesaikan ini karena direktori ini dihapus setelah mysqldihentikan dan tanpa sudoitu tidak akan memiliki akses ke folder ini !!!
Jadeye
72

Ketika saya menggunakan kode mysqld_safe --skip-grant-tables &tetapi saya mendapatkan kesalahan:

Direktori mysqld_safe '/ var / run / mysqld' untuk file socket UNIX tidak ada.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Saya memecahkan:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Sekarang saya menggunakan kode yang sama mysqld_safe --skip-grant-tables &dan dapatkan

mysqld_safe Memulai daemon mysqld dengan database dari / var / lib / mysql

Jika saya menggunakan $ mysql -u rootsaya akan mendapatkan:

Versi server: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Hak Cipta (c) 2000, 2017, Oracle dan / atau afiliasinya. Seluruh hak cipta.

Oracle adalah merek dagang terdaftar dari Oracle Corporation dan / atau afiliasinya. Nama lain mungkin merupakan merek dagang dari pemiliknya masing-masing.

Ketik 'bantuan;' atau '\ h' untuk bantuan. Ketik '\ c' untuk menghapus pernyataan input saat ini.

mysql>

Sekarang saatnya untuk mengubah kata sandi:

mysql> use mysql
mysql> describe user;

Membaca informasi tabel untuk penyelesaian nama tabel dan kolom Anda dapat mematikan fitur ini untuk mendapatkan startup yang lebih cepat dengan -A

Basis data berubah

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

atau Jika Anda memiliki akun root mysql yang dapat terhubung dari mana saja, Anda juga harus melakukan:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

Metode Alternatif:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

Dan jika Anda memiliki akun root yang dapat diakses dari mana saja:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

sekarang perlu quitdari mysql dan stop / start

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

sekarang lagi `mysql -u root -p 'dan gunakan kata sandi baru untuk mendapatkannya

mysql>

Partha Sen
sumber
9
sejak MySQL 5.7.6 kolom Kata Sandi diubah namanya menjadi "authentication_string" Di sini Anda dapat membaca lebih lanjut tentang hal itu: bugs.mysql.com/bug.php?id=76655
IberoMedia
6

Bekerja untuk saya di CentOS:

$ service mysql stop
$ mysqld --skip-grant-tables &
$ mysql -u root mysql

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

$ service mysql restart
Heli Perez
sumber
0

Anda dapat mencoba yang berikut jika database Anda tidak memiliki data ATAU Anda memiliki yang lain untuk mengembalikan data itu. Anda harus mengetahui kata sandi root server Ubuntu tetapi bukan kata sandi root mysql.

Sangat mungkin bahwa banyak dari kita telah menginstal "mysql_secure_installation" karena ini adalah praktik terbaik. Arahkan ke direktori bin di mana mysql_secure_installation ada. Itu dapat ditemukan di direktori / bin pada sistem Ubuntu. Dengan menjalankan kembali penginstal, Anda akan diminta untuk mengubah kata sandi basis data root.

David Baldwin
sumber
Tapi, saya pikir ini hanya menggunakan server mysql yang aman. Itu tidak membuat perbedaan dalam masalah ini.
Rajadip
Ini tidak membantu jika Anda lupa kata sandi root karena Anda harus memasukkan kata sandi saat ini terlebih dahulu.
Jistanidiot