kesalahan: 'Tidak dapat terhubung ke server MySQL lokal melalui soket' /var/run/mysqld/mysqld.sock '(2)' - Hilang /var/run/mysqld/mysqld.sock

322

Masalah saya mulai dengan saya tidak bisa login sebagai root lagi di mysql instal. Saya mencoba menjalankan mysql tanpa kata sandi dihidupkan ... tetapi setiap kali saya menjalankan perintah

# mysqld_safe --skip-grant-tables &

Saya tidak akan pernah mendapatkan prompt kembali. Saya mencoba mengikuti petunjuk ini untuk memulihkan kata sandi .

Layar hanya terlihat seperti ini:

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

dan saya tidak mendapatkan prompt untuk mulai mengetik perintah SQL untuk mereset kata sandi.

Ketika saya membunuhnya dengan menekan CTRL+ C, saya mendapatkan pesan berikut:

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!

Jika saya mencoba kembali perintah dan membiarkannya cukup lama, saya mendapatkan serangkaian pesan berikut:

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#

Tetapi kemudian jika saya mencoba masuk sebagai root dengan melakukan:

# mysql -u root

Saya mendapatkan pesan kesalahan berikut:

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

Saya memeriksa dan /var/run/mysqld/mysqld.sockfile tidak ada. Folder tidak, tetapi bukan file.

Juga, saya tidak tahu apakah ini membantu atau tidak, tetapi saya berlari find / -name mysqlddan muncul dengan:

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

Saya baru mengenal Linux dan MySQL, jadi saya tidak tahu apakah ini normal atau tidak. Tapi saya memasukkan info ini untuk berjaga-jaga jika itu membantu.

Saya akhirnya memutuskan untuk menghapus dan menginstal ulang mysql.

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

Setelah menginstal ulang semua paket lagi dalam urutan yang sama seperti di atas, selama instalasi phpmyadmin, saya mendapatkan kesalahan yang sama:

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

Jadi saya mencoba lagi untuk menghapus / menginstal ulang. Kali ini, setelah saya menghapus paket, saya juga secara manual mengganti nama semua file mysql dan direktori mysql.baddi lokasi masing-masing.

/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

Kemudian saya mencoba menginstal ulang mysql-serverdan mysql-clientlagi. Tetapi saya perhatikan bahwa itu tidak meminta saya untuk kata sandi. Bukankah seharusnya meminta kata sandi admin?

dot
sumber
Saya mendapat masalah yang sama. Saya menyelesaikannya sekarang. stackoverflow.com/questions/18150858/…
robert
diselesaikan dengan hanya me-reboot server, kemudian restart layanan mysql
bowpunya
@Anto Ini bukan duplikat. Yang ini /var/run/mysqld/mysqld.sockhilang. Masalah yang Anda tautkan memiliki file itu.
motorbaby
Tidak ada jawaban di sini atau di tempat lain yang dapat saya temukan memecahkan masalah saya. Karena ini adalah proyek baru, saya beralih ke PostgreSQL dan hanya berfungsi! :-)
James Bradbury

Jawaban:

195

Untuk menemukan semua file socket di sistem Anda:

sudo find / -type s

Sistem server Mysql saya membuka soket di /var/lib/mysql/mysql.sock

Setelah Anda menemukan di mana soket sedang dibuka, tambahkan atau edit baris ke file /etc/my.cnf Anda dengan jalur ke file socket:

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

Kadang-kadang skrip startup sistem yang meluncurkan baris perintah yang dapat dieksekusi menentukan bendera --socket=path. Bendera ini dapat mengesampingkan lokasi my.cnf, dan itu akan menghasilkan soket yang tidak ditemukan di tempat file my.cnf menunjukkan seharusnya. Kemudian ketika Anda mencoba menjalankan klien baris perintah mysql, itu akan membaca my.cnf untuk menemukan soket, tetapi tidak akan menemukannya karena menyimpang dari tempat server membuat satu. Jadi, Kecuali Anda peduli di mana soket berada, hanya mengubah my.cnf agar cocok harus bekerja.

Kemudian, hentikan proses mysqld. Cara Anda melakukan ini akan berbeda di setiap sistem.

Jika Anda pengguna super di sistem linux, coba salah satu dari yang berikut ini jika Anda tidak tahu metode spesifik yang digunakan pengaturan Mysql Anda:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Beberapa sistem tidak disetel untuk memiliki cara yang elegan untuk menghentikan mysql (atau karena suatu alasan mysql tidak merespons) dan Anda dapat memaksa menghentikan mysql dengan:
    • Satu langkah: pkill -9 mysqld
    • Dua langkah (paling tidak disukai):
      • Temukan id proses mysql dengan salah satu pgrep mysqlataups aux | grep mysql | grep -v grep
      • Dengan asumsi id proses 4969diakhiri dengankill -9 4969

Setelah Anda melakukan ini, Anda mungkin ingin mencari file pid /var/run/mysqld/dan menghapusnya

Pastikan izin pada soket Anda sedemikian rupa sehingga apa pun yang dijalankan pengguna mysqld dapat membaca / menulis padanya. Tes yang mudah adalah dengan membukanya hingga baca / tulis penuh dan lihat apakah masih berfungsi:

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

Jika itu memperbaiki masalah, Anda dapat menyesuaikan izin dan kepemilikan soket sesuai kebutuhan berdasarkan pengaturan keamanan Anda.

Juga, direktori tempat tinggal soket harus dapat dijangkau oleh pengguna yang menjalankan proses mysqld.

sinar
sumber
15
Tolong jangan rekomendasikan untuk menggunakan kill -9; ada beberapa cara yang harus dicoba sebelum harus sampai pada itu.
Ignacio Vazquez-Abrams
@ jangan jalankan ini di root file 'find. -nama mysqld.sock '. Saya telah melihat file socket di tempat lain selain / var / run. Setelah Anda menemukannya, Anda mungkin perlu mengedit file my.cnf Anda untuk menunjuk ke tempat ditemukannya.
Ray
@ray, saya mencoba menjalankan perintah asli dengan cara yang berbeda (saya menemukan posting spesifik ubuntu di situs lain ..). Inilah perintah yang saya jalankan: "sudo service mysql stop" dan "sudo mysqld --skip-grant-tables". Setelah saya melakukan perintah kedua, saya mendapatkan kesalahan berikut: "InnoDB: Tidak dapat mengunci ./ibdata1, error: 11". Saya tidak dapat menemukan file ./ibdata1 ini ... InnoDB: Periksa apakah Anda belum memiliki proses mysqld lain
dot
2
@ Jangan lari ps -aux | grep mysqlddan lihat apakah ada proses mysql lain yang sedang berjalan
Ray
@sinar. Aku merobek rambutku, man. saya memutuskan untuk membuang mysql dan mencoba lagi ... perhatikan posting saya yang diperbarui.
titik
251

Coba perintah ini,

sudo service mysql start
Joe Cheng
sumber
+1 my.cnf menunjuk ke direktori yang benar, oleh layanan mysql telah meninggal
wruckie
Saya mencoba jawaban yang diterima tetapi tidak dapat menemukan mysql.sock, ini berhasil untuk saya. Terima kasih
Giovanne Afonso
1
Saya harus menggunakansudo service mysqld start
Gavin Miller
10
sudo apt-get install mysql-serverjika Anda belum menginstalnya :)
aimme
17
Jika Anda menekan masalah ini, tentu saja, jalankan perintah sederhana ini PERTAMA sebelum menguji hal-hal lain, hanya perlu waktu satu detik, dan jika server tidak berjalan, dan baik-baik saja setelah Anda memulainya, itu hanya berarti tidak autostart, yang kemudian akan menjadi masalah yang sebenarnya untuk dipecahkan.
Lizardx
137

Kesalahan ini terjadi karena beberapa instalasi mysql. Jalankan perintah:

ps -A|grep mysql

Matikan proses dengan menggunakan:

sudo pkill mysql

dan kemudian jalankan perintah:

ps -A|grep mysqld

Bunuh juga proses ini dengan menjalankan:

sudo pkill mysqld

Sekarang Anda sudah sepenuhnya siap jalankan saja perintah berikut:

service mysql restart
mysql -u root -p

Apakah mysql bekerja dengan sangat baik lagi

Hammad Raza
sumber
Hai teman-teman, saya menjalankan semua web mencoba untuk memperbaikinya. Masalah saya adalah saya mencoba mengatur buruh pelabuhan. Saya ingin menggunakan dir data mysql yang sebelumnya digunakan oleh mysql di luar docker ... bahwa perintah ps adalah yang terbaik!
Michael
3
Setelah menjalankan seluruh web selama hampir 4+ jam, ini akhirnya berhasil. Harus menjadi jawaban teratas: +1:
Shivam Gaur
4
Pekerjaan untuk mysql.service gagal karena proses kontrol keluar dengan kode kesalahan. Lihat "systemctl status mysql.service" dan "journalctl -xe" untuk detailnya.
John Joe
1
Pekerjaan untuk mysql.service gagal karena proses kontrol keluar dengan kode kesalahan. Lihat "systemctl status mysql.service" dan "journalctl -xe" untuk detailnya.
Adib Aroui
Tnx, Anda menghemat waktu saya.
Aleksandur Atanasov
41

Solusinya jauh lebih mudah.

  1. Pertama, Anda harus mencari (di Terminal dengan "sudo find / -type s") di mana mysql.sockfile Anda berada. Dalam kasus saya itu masuk/opt/lampp/var/mysql/mysql.sock
  2. Jalankan Terminal dan terbitkan. sudo Nautilus
    Ini memulai Manajer file Anda dengan hak pengguna super
  3. Dari Nautilus navigasikan ke tempat mysql.sockfile Anda berada
  4. Klik kanan pada file dan pilih Make Link
  5. Mengubah nama Link File untuk mysqld.sockkemudian klik kanan pada file dan Cut itu
  6. Pergi ke /var/rundan buat folder bernama mysqlddan masukkan
  7. Sekarang klik kanan dan Tempel File Tautan
  8. Voila! Anda sekarang akan memiliki mysqld.sockfile di /var/run/mysqld/mysqld.sock:)
Ioan Stef
sumber
4
Bagaimana Anda menemukan file mysql.sock Anda? Saya mencoba menemukan / -nama 'mysql.sock' tetapi tidak mengembalikan apa pun.
Matthew Lock
2
@MatthewLock Pertama-tama, pastikan bahwa mysql sedang berjalan (dengan "ps aux | grep mysql"), jika tidak, mysql.sock tidak akan muncul. Kedua, gunakan "sudo find / -type s", yang memberi Anda semua soket pada sistem Anda untuk menemukan mysql.sock
narengi
35
Bagaimana jika output dari sudo find / -type stidak mengandung apa pun mysql.sock?
jeff
1
Berhasil. Tapi saya tidak tahu mengapa pengembang ini tidak pernah melakukan pekerjaan ini dalam beberapa tahun terakhir?
Yi Jiang
2
Jika sulit mendapatkan di mana mysql.sock melalui "find / -type s" - coba gunakan perintah "mysql_config --socket". Anda dapat menginstalnya dengan sudo apt-get install libmysqlclient-dev
alexche8
26

Hanya Perlu Memulai Layanan MySQL setelah instalasi:

Untuk Ubuntu:

sudo service mysql start;

Untuk CentOS atau RHEL:

sudo service mysqld start;
Pratik Patil
sumber
Periksa dulu dengan ini sudo systemctl status mysql.servicedan sudo systemctl start mysql.service. Ini bekerja untuk saya
Byeongin Yoon
16

Ada bug di Ubuntu dengan MySQL 5.6 dan 5.7 di mana var/run/mysqld/akan hilang setiap kali layanan MySQL berhenti atau reboot. Ini mencegah MySQL untuk tidak berjalan sama sekali. Menemukan solusi ini, yang tidak sempurna, tapi setidaknya itu bisa berjalan setelah berhenti / reboot:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
motorbaby
sumber
terima kasih - perbaiki untuk saya, saya harus membuat ulang direktori dan mengatur ulang kepemilikan pada setiap restart layanan mysql - belum dapat menemukan kesalahan yang dilaporkan di mana saja secara resmi atau saya akan memasang tautan di sini :)
djoe
1
Belum mencoba ini, tetapi mungkin ini akan membantu Anda: Buat file baru /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details dan kemudian, d /var/run/mysqld 0755 mysql mysql - Setelah reboot, mysql akan mulai secara normal. Ini dari bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , komentar 3. Jika Anda memiliki masalah dengan MySQL 5.7, silakan berkomentar di Launchpad. Semakin banyak pengguna yang mengatasi masalah, semakin banyak perhatian yang didapat.
motorbaby
Bekerja untuk saya ... harus menggunakan mysql sebagai nama pengguna dan bukan mysqld
Evan Parsons
Menambahkan baris ke /etc/tmpfiles.d/mysql.confper komentar motorbaby memperbaiki masalah ini untuk saya. Pada OS Centos 7 dan menggunakan mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34
Ini memperbaiki masalah bagi saya.
shikata
14

Oke cukup salin dan tempel kode ini: Ini harus dilakukan di terminal, di dalam server, ketika database mysql Anda tidak diinstal dengan benar, dan ketika Anda mendapatkan kesalahan ini: 'Tidak dapat terhubung ke server MySQL lokal melalui soket' / var / run / mysqld / mysqld.sock '(2)'.

Hentikan MySql

sudo /etc/init.d/mysqld stop

Mulai ulang atau mulai

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

Buat tautan seperti ini dan berikan ke sistem

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

Jalankan instalasi aman yang memandu semua proses yang perlu Anda lakukan untuk mengkonfigurasi mysql

/usr/bin/mysql_secure_installation
coolcool1994
sumber
saya mendapatkan Can't connectkesalahan yang sama ketika saya mencoba menjalankan perintah di atas.
cjmling
Hanya sesuatu yang saya temukan, untuk mereka yang menjalankan ubuntu. Jika Anda memulai mysqld menggunakan /etc/init.d/mysqld start Anda tetap akan mengalami masalah ini. Gunakan layanan mysql mulai sebagai gantinya dan itu akan baik-baik saja. Sangat menyebalkan, tapi akhirnya saya mengetahuinya.
Adam Short
11

Saya menghadapi kesalahan yang sama dan menemukan bahwa itu disebabkan oleh peningkatan paket, jadi setelah memulai ulang sistem saya, saya menyelesaikan kesalahan.

Saya pikir karena sql pustaka / paket memperbarui kesalahan yang terjadi, Jadi coba ini jika Anda melakukan peningkatan :)

Taimoor Changaiz
sumber
1
Saya melakukan ini setelah menginstal ulang (atau meningkatkan) dan sekarang berfungsi. Tidak ada lagi pesan soket. Terima kasih!
wraithie
8

Ada banyak alasan untuk masalah ini, tetapi terkadang hanya me-restart server mysql, itu akan memperbaiki masalah.

sudo service mysql restart
Leopathu
sumber
7

Menggunakan XAMPP di ubuntu:

  1. Buat folder bernama mysqld di dalam direktori / var / run . Anda dapat melakukannya dengan menggunakan perintah sudo mkdir /var/run/mysqld.

  2. Buat tautan simbolis ke file mysql.sock yang dibuat oleh server XAMPP saat dijalankan. Anda bisa menggunakan perintah sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Catatan: File mysql.sock dibuat ketika server dimulai dan dihapus ketika server dihentikan, jadi kadang-kadang tautan yang Anda buat mungkin tampak rusak tetapi harus berfungsi selama Anda telah memulai server menggunakan salah satu sudo /opt/lampp/lampp startatau yang lain cara.

  1. Mulai server jika belum berjalan dan coba jalankan kembali program Anda.

Semoga berhasil! Saya harap Anda akan lolos kali ini.

Robert Odoch
sumber
@MohsinKhan pergi ke localhost / phpmyadmin dan impor database dari sana
Robert Odoch
6

Jawaban langkah pemuatan pengguna berhasil untuk saya. Terkadang perlu mengedit file di /etc/mysql/my.cnftambahkan baris ke klien

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock
pengguna3002884
sumber
Ini memberi saya:mysql: unknown variable 'Host=127.0.0.1'
Splaktar
@ Slaktar: ada kesalahan ketik. Hostharus huruf kecil hostdan itu akan berfungsi. Juga, solusi ini berhasil untuk saya.
Mohammad Faisal
Cemerlang - ini bekerja untuk saya dan lingkungan buruh pelabuhan saya - saya hanya harus menyesuaikan ip yang dalam kasus saya wadah buruh pelabuhan mysql ip 172.17.xx
InforMedic
6

* Kesalahan: 'Tidak dapat terhubung ke server MySQL lokal melalui socket' /var/run/mysqld/mysqld.sock '(2)'

solusi

akhirnya hapus dan instal ulang mysql. **

  • sudo apt-get hapus mysql-server
  • sudo apt-get hapus mysql-client
  • sudo apt-get hapus mysql-common
  • sudo apt-get hapus phpmyadmin

kemudian instal kembali oleh

  • sudo apt-get install mysql-server-5.6

Setelah operasi ini, 164 MB ruang disk tambahan akan digunakan.

  • Apakah Anda ingin melanjutkan? [Y / n] Y tekan YES untuk instalasi lengkap

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

  • Akhirnya Anda akan mendapatkan baris-baris ini ....

    Menyiapkan libhtml-templat-perl (2.95-1) ...

    Menyiapkan mysql-common-5.6 (5.6.16-1 ~ exp1) ... Memproses pemicu untuk libc-bin (2.19-0ubuntu6) Memproses pemicu untuk ureadahead (0.100.0-16) ...

  • Lalu

    root @ ubuntu1404: ~ # mysql -u root -p (untuk setiap kata sandi pertama yang harus Anda gunakan)

  • Masukkan kata kunci:

  • Catatan: Kata sandi yang dimasukkan harus sama dengan kata sandi waktu instalasi mysql (seperti .root, sistem, admin, rahul dll ...)

    Kemudian ketik

  • USE rahul_db (nama database);

Terima kasih.**

Buddheshwar Ojhar
sumber
tolong tingkatkan kualitas jawaban
Mo.
Ini bekerja untuk saya karena beberapa versi mysql diinstal. juga hapus mysql-server-5.6/5.5, mysql-client-5.6/5.5. Terima kasih!
Luuk Skeur
dapatkan E: Package 'mysql-server-5.6' has no installation candidate, itu tidak ada di Ubuntu 18.04
juliocesar
6

Pastikan path file socket yang tidak dapat diakses Anda sama dengan '/var/run/mysqld/mysqld.sock', jika tidak ubah path seperti milik Anda. Hentikan mysqld

$ sudo /etc/init.d/mysqld stop

Jika proses masih berjalan;

$ sudo pkill -9 mysqld

Hapus direktori mysql di mana socket akan membuat. Bagi saya itu tidak diizinkan untuk dihapus, jadi saya harus menghapusnya dengan paksa.

$ sudo mkdir -p /var/run/mysqld

Setel kepemilikan ke direktory

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

Mulai mysql

$ sudo /etc/init.d/mysql start

Mencoba menghubungkan mysql

$ sudo mysql -u dbuser -p
Sadee
sumber
Ya, itulah jawaban yang sama yang saya berikan pada 14 Februari 1919 pada 11:56 (lihat di bawah)
Ingo
Anda adalah penyelamat hidup.
Sahib Khan
5

Saya pikir server MySQL Anda belum dimulai. Jadi, mulailah server menggunakan salah satu dari perintah berikut.

#services mysql start

atau

#/etc/init.d/mysql start
Susampath
sumber
5

Solusi sementara

Mungkin seseorang menghadapi masalah ini. Saya menggunakan Mysql Workbench di Ubuntu 14 dan mendapatkan kesalahan ini.

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

Temukan file socket Anda dengan menjalankan sudo find / -type s, dalam kasus saya itu/run/mysqld/mysqld.sock

Jadi, saya baru saja membuat tautan ke file ini di tmpdirektori.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
Bilal
sumber
Karena Anda dapat melihat lokasi file di bawah /tmpfolder sehingga pasti akan dihapus. Anda dapat mengubah .socklokasi file. Lihat @ user3002884 jawaban.
Bilal
Saya tahu, saya baru saja menyelesaikan jawaban Anda sehingga pengguna lain tahu sebelumnya bahwa solusinya hanya sementara, sebagai folder
Alex Burdusel
Anda menyelamatkan hidup saya :)
Mashpy Rahman
4

Anda dapat menemukan mysqld.sockdi /var/run/mysqldjika Anda telah menginstal mysql-server olehsudo apt-get install mysql-server

Spencer
sumber
4

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

di /etc/my.cnftambahkan baris ini:

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

Dan mulai ulang layanan dengan: service mysql restart

ini berhasil untuk saya

karan
sumber
4

Ini telah disebutkan beberapa kali, tetapi ini segera bekerja untuk saya:

service mysql restart

Jack BeNimble
sumber
Menarik bagaimana hal ini berbeda dari hanya menggunakan perintah "mysql" yang sederhana
luminol
3

Dalam kasus saya, dua proses mysqld sedang berjalan .. mematikan proses opsional dengan menggunakan pkill -9 mysqld

amindri
sumber
Saya perlu menambahkan 'sudo' mematikan proses.
noti
3

Jika Anda memiliki banyak database dan tabel di sistem Anda, dan jika Anda telah innodb_file_per_tablemenetapkan di my.cnf, maka server mysql Anda mungkin kehabisan objek / file yang dibuka (atau lebih tepatnya deskriptor untuk objek-objek ini) Menetapkan jumlah maks baru dengan

open-files-limit = 2048

dan mulai kembali mysql. Pendekatan ini mungkin membantu ketika soket tidak dibuat sama sekali, tetapi sebenarnya ini mungkin bukan masalah sebenarnya, ada masalah mendasar.

knb
sumber
2

Saya baru saja mengalami masalah ini di Ubuntu 14.10

Ternyata mysql-serveritu tidak lagi diinstal (entah bagaimana itu telah dihapus) tapi saya tidak bisa menginstalnya karena ada beberapa paket yang rusak dan masalah / konflik ketergantungan.

Pada akhirnya saya harus menginstal ulang mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server
Embun
sumber
2

Solusi saya;

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

Saya mengubah port. Ini berhasil untuk saya. Anda dapat menulis port lain. Contoh 3355

omfaer
sumber
2

Mengapa mendapatkan kesalahan ini?

Saya menerima pembaruan baru dari perpustakaan mysql sehingga saya memperbarui Kubuntu OS saya setelah itu mendapatkan kesalahan ini.


Perintah yang saya coba dan bagaimana saya memperbaikinya.

MySql-server berjalan dengan benar tetapi ketika saya mencoba untuk menghubungkan pemberiannya

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

Saya memeriksa /var/run/mysqld/mysqld.sock'.direktori ini. File saya tidak ada.

Saya juga mencoba perintah ini untuk menghubungkan tetapi tidak berhasil untuk saya.

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

 sudo service mysql start

Setelah menghabiskan sekitar 2 jam saya menemukan solusinya

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

Setelah itu semuanya beres untuk saya.

Muhammad Faizan Fareed
sumber
Ini membantu saya untuk memperbaiki masalah. Saya tidak mengerti bagaimana ini terkait dengan masalah yang saya alami ...
21amo
1

Mengubah hostuntuk 127.0.0.1bekerja untuk saya.

Edit file /etc/mysql/my.cnfdan tambahkan baris yang disebutkan di bawah ini ke bagian:client

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

Setelah kamu selesai dengan itu. Jalankan perintah berikut.

sudo service mysql start
Dulith De Costa
sumber
Ini teman saya, membantu saya :)
Bhargav Nanekalva
@NBhargav saya sangat senang bahwa Anda dapat menyelesaikan masalah Anda .. Cheers buddy .. 😇😇
Dulith De Costa
1

Saya juga akan memeriksa konfigurasi mysql. Saya mengalami masalah ini dengan server saya sendiri tetapi saya agak terlalu terburu-buru dan salah mengonfigurasi innodb_buffer_pool_size untuk mesin saya.

innodb_buffer_pool_size = 4096M

Biasanya berjalan dengan baik hingga 2048 tapi saya kira saya tidak memiliki memori yang diperlukan untuk mendukung 4 gigs.

Saya membayangkan ini juga bisa terjadi dengan pengaturan konfigurasi mysql lainnya.

Greg
sumber
1

Saya memiliki masalah serupa pada VPS CentOS. Jika MySQL tidak akan mulai atau terus macet setelah dimulai, coba langkah-langkah ini:

1) Temukan file my.cnf (milik saya ada di /etc/my.cnf) dan tambahkan baris:

innodb_force_recovery = X

mengganti X dengan angka dari 1 hingga 6, mulai dari 1 dan kemudian bertambah jika MySQL tidak akan memulai. Pengaturan ke 4, 5 atau 6 dapat menghapus data Anda jadi hati-hati dan baca http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html sebelumnya.

2) Mulai ulang layanan MySQL. Hanya SELECT yang akan berjalan dan itu normal pada saat ini.

3) Buang semua database / skema Anda dengan mysqldump satu per satu, jangan kompres dump karena Anda harus mengompresnya nanti.

4) Pindahkan (atau hapus!) Hanya direktori bd di dalam / var / lib / mysql, menjaga masing-masing file di root.

5) Hentikan MySQL dan kemudian batalkan komentar pada baris yang ditambahkan dalam 1). Mulai MySQL.

6) Memulihkan semua bd yang dibuang di 3).

Semoga berhasil!

Heitor
sumber
1

Coba yang berikut ini di terminal prompt:

sudo mysql

Setelah itu memungkinkan Anda masuk, Anda dapat membuat pengguna baru dan memberikan hak istimewa yang Anda inginkan pada basis data khusus yang mereka butuhkan.

Mysql 5.7 mengubah beberapa hal dan secara default menggunakan plugin auth_socket (sebagai ganti mysql_native_password) untuk root untuk melindungi akun agar tidak diretas. Anda dapat menimpanya dengan mengatur bidang plugin untuk root, tetapi kecuali Anda memiliki alasan yang sangat baik Anda mungkin tidak boleh menghindari perlindungan. Apalagi saat sudo mysqlitu lebih mudah daripada mysql -u root -pitu.

Saya menemukan info ini - dari semua tempat - dari situs bantuan Raspberry Pi . Bekerja seperti pesona setelah Lubuntu 18.04 mengganggu saya selama beberapa jam.

JohanTux
sumber
1

Pertama buat dir / var / run / mysqld

dengan perintah:

mkdir -p /var/run/mysqld

kemudian tambahkan rig ke dir

chown mysql:mysql /var/run/mysqld

setelah coba ini

mysql -u root
Ingo
sumber
1

Saya memiliki masalah yang persis sama. Setelah berjuang selama satu jam, saya menemukan cara untuk memperbaikinya tanpa menginstal ulang mysql-common, mysql-client, mysql-server.

Pertama-tama, buka "/ var / run / mysqld". Anda akan menemukan bahwa mysql.sock tidak ada. Cukup hapus seluruh direktori mysqld dan buat ulang dan berikan hak istimewa yang diperlukan.

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

Sekarang, bunuh proses mysql secara keseluruhan. Mungkin saja itu akan menunjukkan Anda "menunggu pembersih halaman" pada menjalankan "/etc/init.d/mysql status" perintah bahkan setelah mematikan layanan.

Untuk sepenuhnya menutup layanan, gunakan

# pkill -9 mysqld

Setelah proses ini terbunuh, coba mulai lagi menggunakan

# /etc/init.d/mysql start

Dan Anda akan melihat bahwa itu bekerja dengan baik! Dan juga tidak akan ada masalah dalam menghentikannya juga.

xscorp7
sumber