Tidak dapat terhubung ke server mysql lokal melalui socket / tmp mysql sock?

Periksa apakah Anda memiliki file /tmp/mysql.sock_, Anda mungkin memiliki file kaus kaki di tempat lain, seperti

/var/lib/mysql/mysql.sock

Jika demikian, tautkan ke file yang diminta

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

  最近租了一个阿里云云翼服务器,趁着自己还是一个学生,享受一下优惠。我租的是阿里云Ubuntu16. 04版本的服务器,在搭建mysql的时候,一开始是可以运行的,由于某次手抽,把mysql的套接字文件不小心删除了,然后无论怎么卸载重装,都出现了这个问题:

root@iZufkfljcZ:~# mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  网上找了好久,搜到的全部是重复的文章而且也没讲明为什么出现这个问题,找了一天才找到一篇讲解mysql. sock文件作用的文章,然后分析一下为什么出现这个问题,现在讲之总结一下,以备后人查阅。

  我出现的问题是:找不到mysql. sock,如果你可以运行

find / -name mysql.sock
这条命令,并且能查到结果的话,只需将查到的结果做一个软连接到/tmp目录下即可解决(网上都是这么解决的)。

但是,我执行了这条语句之后,并没有任何反应,没有找到mysql. sock文件。

在这之前,需要明白mysql. sock这个文件有什么用?

连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql. sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。

如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。

如果和我一样,重启服务器还是没有任何变化,你可以先执行下面的语句:

# mysql -uroot -h 127.0.0.1 -p 
不出意外,这句话应该是可以执行的, 你现在不能用套接字建立连接因为它不见了,所以可以建立一个TCP/IP连接
如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,我的解决办法是重新指定一个不同的套接字,或者说,我现在没有mysql. sock文件,所以我要想办法生成一个。

Pengguna yang bekerja dengan MySQL dapat mengalami kesalahan 'Tidak dapat terhubung ke server MySQL lokal melalui soket'/var/run/mysqld/mysqld. sock (2)' saat masuk ke antarmuka MySQL. Masalah ini biasanya muncul jika MySQL tidak bisa mengakses mysqld. file soket kaus kaki

Dalam tutorial ini, kita akan membahas kemungkinan penyebab kesalahan 'Tidak dapat terhubung ke server MySQL lokal melalui soket' dan menunjukkan kepada Anda berbagai metode untuk menyelesaikan masalah ini

How to fix 'can't connect to local MySQL server through socket' error

Prasyarat

  • Sistem yang menjalankan Ubuntu 20. 04
  • Akun pengguna dengan hak sudo
  • Akses ke jendela terminal/baris perintah
  • Salinan MySQL terinstal dan siap digunakan (pelajari cara menginstalnya dengan panduan kami untuk menginstal MySQL di Ubuntu 20. 04)

Menyelesaikan 'Tidak dapat terhubung ke server MySQL lokal melalui soket'/var/run/mysqld/mysqld. kaus kaki' (2)' Kesalahan

Ada beberapa cara untuk mengatasi 'Tidak dapat terhubung ke server MySQL lokal melalui soket'/var/run/mysqld/mysqld. kaus kaki (2)' kesalahan. Jika satu solusi tidak berhasil, turunkan daftar sampai Anda menemukan solusi yang menyelesaikan masalah

Metode 1. Periksa Layanan MySQL

1. Periksa status layanan MySQL dengan

sudo systemctl status mysql

Checking the status of the MySQL service

2. Jika layanan tidak berjalan, mulai ulang dengan menggunakan

sudo systemctl start mysql
_

3. Untuk mencegah masalah ini terjadi, setel layanan MySQL untuk memulai secara otomatis saat boot

sudo systemctl enable mysql

Set the MySQL service to automatically start when the system boots up

Metode 2. Verifikasi mysqld. Lokasi kaus kaki

Pesan 'Tidak dapat terhubung ke server MySQL lokal melalui soket'/var/run/mysqld/mysqld. kesalahan sock' (2)' juga terjadi jika MySQL tidak dapat menemukan file mysql. file soket kaus kaki

1. Temukan mysqld saat ini. lokasi sock dengan menggunakan perintah

sudo systemctl start mysql
_3 untuk membuat daftar semua file socket di sistem Anda

sudo find / -type s
_

List all the socket files on your system using the find command

2. Buka file konfigurasi MySQL di editor teks pilihan Anda. Dalam contoh ini, kami menggunakan nano

sudo nano /etc/mysql/my.cnf

3. Kemudian, tambahkan baris berikut di akhir file konfigurasi MySQL

[mysqld]
socket=[path to mysqld.sock]
[client]
socket=[path to mysqld.sock]

Di mana

  • sudo systemctl start mysql
    _4. Jalan menuju mysqld. file soket kaus kaki yang Anda temukan di Langkah 1

Edit the MySQL configuration file

Metode lain adalah membuat symlink dari lokasi mysqld. sock ke direktori /var/run/mysqld

ln -s [path to mysqld.sock] /var/run/mysqld/mysqld.sock

4. Tekan Ctrl+X untuk menutup file konfigurasi dan ketik Y dan tekan Enter untuk menyimpan perubahan yang Anda buat

4. Terakhir, restart layanan MySQL

sudo systemctl restart mysql

Metode 3. Periksa Izin Folder MySQL

Penyebab potensial lainnya adalah Layanan MySQL tidak dapat mengakses direktori /var/run/mysqld karena pembatasan izin

1. Untuk mengatasi masalah ini, ubah pengaturan izin untuk direktori mysqld dengan

sudo chmod -R 755 /var/run/mysqld

Menyetel izin ke

sudo systemctl start mysql
_5 memungkinkan pengguna root untuk membaca, menulis, dan mengeksekusi direktori, sedangkan pengguna lain hanya dapat membaca dan mengeksekusi

2. Mulai ulang layanan MySQL agar perubahan diterapkan

sudo systemctl restart mysql

Metode 4. Periksa Beberapa Instance MySQL

Error juga terjadi jika ada beberapa instance MySQL yang berjalan pada waktu yang bersamaan

1. Untuk mendaftar semua contoh MySQL, gunakan

sudo systemctl start mysql
_0

Listing all currently running instance of MySQL

2. Jika ada beberapa instance MySQL yang berjalan, hentikan dengan

sudo systemctl start mysql
_1

3. Mulai ulang layanan MySQL untuk memulai satu contoh MySQL

sudo systemctl restart mysql

Kesimpulan

Setelah membaca tutorial ini, Anda seharusnya telah mengidentifikasi penyebab kesalahan 'Tidak dapat terhubung ke server MySQL lokal melalui soket' dan menerapkan solusi yang sesuai

Tidak dapat terhubung ke server MySQL lokal?

Berikut adalah beberapa alasan kesalahan Tidak dapat terhubung ke server MySQL lokal mungkin terjadi. mysqld tidak berjalan di host lokal . Periksa daftar proses sistem operasi Anda untuk memastikan proses mysqld ada. Anda menjalankan server MySQL di Windows dengan banyak koneksi TCP/IP.

Bagaimana cara terhubung ke MySQL melalui soket?

Hubungkan ke MySQL dengan soket unix .
Temukan file soket Unix Di host server di baris perintah, jalankan perintah berikut. .
Periksa koneksi soket Unix dari baris perintah.
Unduh pustaka pihak ketiga.
Konfigurasikan driver MySQL di DataGrip.
Buat koneksi ke server MySQL

Bagaimana cara menghubungkan server MySQL ke localhost?

Hal ini dapat dilakukan dengan fungsi PHP mysql_connect. $mysqli = new mysqli("localhost", $username, $password, $database); Dengan baris ini PHP terhubung ke server database MySQL di localhost . Setelah koneksi dibuat, Anda harus memilih database yang ingin Anda gunakan.

Mengapa database MySQL tidak terhubung?

Periksa apakah MySQL berjalan di alamat localhost. Periksa apakah MySQL dapat dijangkau di port 3306 (catatan. 3306 adalah default, tapi ini bisa diubah). Periksa root pengguna memiliki hak untuk terhubung ke localhost dari alamat Anda (hak MySQL menentukan klien apa yang dapat terhubung ke server dan dari mesin mana)