Cara menggunakan change mysql socket path

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:

[email protected]:/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 meninggalkannya cukup lama, saya mendapatkan serangkaian pesan berikut:

[email protected]:/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
[email protected]:/run/mysqld#

Tetapi jika saya mencoba login 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 file /var/run/mysqld/mysqld.sock tidak ada. Folder tidak, tetapi bukan file.

Juga, saya tidak tahu apakah ini membantu atau tidak, tetapi saya menjalankan find / -name mysqld dan 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 kalau-kalau ada gunanya.

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 dan direktori mysql ke mysql.bad di 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-server dan mysql-client lagi. Tapi saya perhatikan itu tidak meminta saya untuk kata sandi. Bukankah seharusnya meminta kata sandi admin?

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

Terkadang skrip startup sistem yang meluncurkan baris perintah yang dapat dieksekusi menetapkan flag --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 untuk 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 diatur 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 pgrep mysql atau ps aux | grep mysql | grep -v grep
      • Dengan asumsi id proses adalah 4969 diakhiri dengan kill -9 4969

Setelah Anda melakukan ini, Anda mungkin ingin mencari file pid di /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.

Coba perintah ini,

Sudo service mysql start

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 sepenuhnya siap, jalankan saja perintah berikut:

service mysql restart
mysql -u root -p

Apakah mysql bekerja dengan sangat baik lagi

Solusinya jauh lebih mudah. 

  1. Pertama, Anda harus mencari (di Terminal dengan "Sudo find/-type s") di mana file mysql.sock Anda berada. Dalam kasus saya itu ada di /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 file mysql.sock Anda berada 
  4. Klik kanan pada file dan pilih Buat Tautan
  5. Ubah nama File Tautan menjadi mysqld.sock lalu klik kanan pada file dan Potong itu
  6. Pergi ke /var/run dan buat folder bernama mysqld dan masukkan
  7. Sekarang klik kanan dan Tempel File Tautan
  8. Voila! Anda sekarang akan memiliki file mysqld.sock di /var/run/mysqld/mysqld.sock :)

Hanya Perlu Memulai Layanan MySQL setelah instalasi:

Untuk Ubuntu:

Sudo service mysql start;

Untuk CentOS atau RHEL:

Sudo service mysqld start;

Oke 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

Ada bug di Ubuntu dengan MySQL 5.6 dan 5.7 di mana var/run/mysqld/ akan hilang setiap kali layanan MySQL berhenti atau di-reboot. Ini mencegah MySQL dari menjalankan 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/

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 :)

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

Sudo service mysql restart

* 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 menghapus mysql-server
  • Sudo apt-get menghapus mysql-client
  • Sudo apt-get menghapus mysql-common
  • Sudo apt-get remove 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-template-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, u harus digunakan)

  • Masukkan kata kunci:

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

    Kemudian ketik

  • USE rahul_db (nama basis data);

Terima kasih.**

Jawaban langkah pemuatan pengguna berhasil untuk saya . Terkadang perlu mengedit file dalam /etc/mysql/my.cnf tambahkan baris ke klien

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

Menggunakan XAMPP di ubuntu:

  1. Buat folder bernama mysqld inside/var/run direktori. Anda dapat melakukannya dengan menggunakan perintah Sudo mkdir /var/run/mysqld.

  2. Buat tautan simbolis ke mysql.sock file yang dibuat oleh server XAMPP saat dijalankan. Anda dapat 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 memiliki memulai server menggunakan Sudo /opt/lampp/lampp start atau cara lain apa pun.

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

Semoga berhasil! Saya harap Anda akan lolos kali ini.

Mungkin seseorang menghadapi masalah ini. Saya menggunakan Mysql Workbench on Ubuntu 14 dan mendapat 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 adalah /run/mysqld/mysqld.sock

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

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

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

service mysql restart

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

di /etc/my.cnf tambahkan 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 bekerja untuk saya 

anda dapat menemukan mysqld.sock di /var/run/mysqld jika Anda telah menginstal mysql-server .__ oleh Sudo apt-get install mysql-server

Saya baru saja mengalami masalah ini di Ubuntu 14.10

Ternyata mysql-server tidak lagi diinstal (entah bagaimana sudah 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

Dalam kasus saya, dua proses mysqld berjalan .. Membunuh proses opsional dengan menggunakan Pkill -9 mysqld

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

Jika Anda memiliki banyak basis data dan tabel di sistem Anda, dan jika Anda memiliki innodb_file_per_table di my.cnf, maka server mysql Anda mungkin kehabisan objek/file yang dibuka (atau lebih tepatnya deskriptor untuk objek ini). nomor maks baru dengan

open-files-limit = 2048

dan restart mysql . Pendekatan ini mungkin membantu ketika soket tidak dibuat sama sekali, tapi sebenarnya ini mungkin bukan masalah sebenarnya, ada masalah mendasar.

Saya menjalankan MySQL saya pada mesin virtual di Ubuntu, Jadi apa yang terjadi adalah ketika saya me-restart Host dan VM saya, IP telah berubah. Saya telah mengkonfigurasi mysql untuk dijalankan pada IP 192.168.0.5 dan sekarang karena alokasi IP dinamis, IP baru saya adalah 192.168.0.8

Jika Anda memiliki masalah yang sama, cukup periksa ip Anda dengan perintah ifconfig.

Periksa pengikatan MySQL Anda dengan perintah cat /etc/mysql/my.cnf | grep bind-address

Jika kedua IP sama, instal ulang server mysql Anda

Jika tidak, ubah IP Anda di /etc/network/interfaces menggunakan nano, vi, vim atau apa pun yang Anda sukai.

Saya lebih suka Sudo nano /etc/network/interfaces

dan masukkan yang berikut ini

auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0

Simpan file antarmuka, mulai ulang antarmuka Anda Sudo ifdown eth0 && Sudo ifup eth0 ganti "eth0" dengan antarmuka jaringan Anda

Mulai ulang MySQL Sudo service mysql stop diikuti oleh Sudo service mysql start

Jika Anda memiliki masalah yang sama dengan saya, Anda baik untuk pergi!

Mengubah Host ke 127.0.0.1 bekerja untuk saya.

Edit file dalam /etc/mysql/my.cnf dan 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

Saya memiliki masalah serupa pada VPS CentOS. Jika MySQL tidak akan mulai atau terus macet tepat 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!

Saya juga akan memeriksa konfigurasi mysql. Saya mengalami masalah ini dengan server saya sendiri tapi 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.

Terkadang hanya karena Anda tidak memiliki cukup ruang di server, cukup kosongkan beberapa ruang (seperti menghapus file log), dan mulai mysql:

/etc/init.d/mysql start

Saya menggunakan XAMPP di Ubuntu. Saya menemukan kesalahan ini ketika menghubungkan database melalui terminal. Saya menyelesaikannya tanpa konfigurasi apa pun karena jalur file socket default di XAMPP ditulis dalam "/opt/lampp/etc/my.cnf" sebagai berikut:

[client]
#password   = your_password
port        = 3306
socket      = /opt/lampp/var/mysql/mysql.sock

sekarang Anda dapat terhubung hanya dengan memberikan parameter soket ini dengan perintah mysql pada terminal seperti:

mysql -u root --socket /opt/lampp/var/mysql/mysql.sock

dan itu dilakukan tanpa konfigurasi apa pun.

Jika Anda tidak ingin mengetik lintasan soket setiap saat, maka lakukan perubahan lintasan default di my.cnf dengan "/var/run/mysqld/mysqld.sock". Berikan izin dan mulai ulang server mysql.

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 ini coba

mysql -u root

Dalam kasus saya masalahnya adalah alamat bind di /etc/mysql/my.cnf, lalu:

nano /etc/mysql/my.cnf

cari alamat bind dan hapus spesifik dengan Host ip (bukan 127.0.0.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 spesifik 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 mengesampingkan ini dengan mengatur bidang plugin untuk root, tetapi kecuali jika Anda memiliki alasan yang sangat baik Anda mungkin tidak boleh menghindari perlindungan. Terutama ketika Sudo mysql lebih mudah daripada mysql -u root -p

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

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.

Saya mencoba hampir semua solusi yang terdaftar, tidak ada yang bekerja untuk saya sampai saya me-restart mesin dan kemudian server mysql restart ketika saya mengeluarkan perintah "service mysql restart". 

pada archlinux saya menghadapi kesalahan ini dan masalahnya adalah layanan mysqld- tidak berjalan.

Namun saya tidak dapat mengaktifkan layanan mysql dengan systemctl start mysqld seperti yang diperintahkan dalam dokumentasi Archlinux. Saya pikir kesalahannya seperti

layanan mysqld.ser tidak ditemukan

Saya pertama kali perlu me-restart sistem.

Kemudian saya memasukkan perintah lagi (dan memasukkan systemctl enable mysqld) dan sekarang mysql dapat menemukan mysql.sock yang dibuat.