Saya mendapatkan kesalahan berikut ketika saya mencoba terhubung ke mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Apakah ada solusi untuk kesalahan ini? Apa yang mungkin menjadi alasan di baliknya?
Saya mendapatkan kesalahan berikut ketika saya mencoba terhubung ke mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Apakah ada solusi untuk kesalahan ini? Apa yang mungkin menjadi alasan di baliknya?
Jawaban:
Apakah Anda terhubung ke "localhost" atau "127.0.0.1"? Saya perhatikan bahwa ketika Anda terhubung ke "localhost" konektor soket digunakan, tetapi ketika Anda terhubung ke "127.0.0.1" konektor TCP / IP digunakan. Anda dapat mencoba menggunakan "127.0.0.1" jika konektor soket tidak diaktifkan / berfungsi.
/etc/hosts
file dalam wadah buruh pelabuhan menunjukkan kepada saya nama host MySql mysql
. Menggunakan nama host yang sama ini di konfigurasi koneksi saya menyelesaikan masalah.
Pastikan layanan mysql Anda berjalan
service mysqld start
Kemudian, coba salah satu dari yang berikut ini:
(jika Anda belum menetapkan kata sandi untuk mysql)
mysql -u root
jika Anda sudah mengatur kata sandi
mysql -u root -p
service mariadb start
karena mariadb.org/debian-9-released-mariadb-mysql-variant
Jika file Anda my.cnf (biasanya di folder dll) sudah dikonfigurasi dengan benar
socket=/var/lib/mysql/mysql.sock
Anda dapat memeriksa apakah mysql berjalan dengan perintah berikut:
mysqladmin -u root -p status
coba ubah izin Anda ke folder mysql. Jika Anda bekerja secara lokal, Anda dapat mencoba:
sudo chmod -R 777 /var/lib/mysql/
yang menyelesaikannya untukku
Server MySQL tidak berjalan, atau itu bukan lokasi file soketnya (periksa my.cnf).
Kemungkinan besar mysql.sock
tidak ada di /var/lib/mysql/
.
Jika Anda menemukan file yang sama di lokasi lain maka symlink:
Sebagai contoh: Saya memilikinya /data/mysql_datadir/mysql.sock
Alihkan pengguna ke mysql dan jalankan seperti yang disebutkan di bawah ini:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
Itu memecahkan masalah saya
Jika Anda menggunakan RHEL baru-baru ini, Anda mungkin perlu memulai mariadb (open source mysql db) alih-alih mysql db:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
Anda kemudian dapat mengakses mysql dengan cara yang biasa:
mysql -u root -p
mariadb-server
dan mariadb
, jangan lupa untuk menjalankan mysql_secure_installation
untuk membersihkan beberapa pengaturan default tidak aman.
Dalam kasus saya, saya telah memindahkan file socket ke lokasi lain di dalam /etc/my.cnf
dari /var/lib/mysql/mysql.sock
ke/tmp/mysql.sock
Bahkan setelah me-restart layanan mysqld, saya masih melihat pesan kesalahan ketika saya mencoba untuk terhubung.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Masalahnya adalah dengan cara klien dikonfigurasi. Menjalankan diagnostik sebenarnya akan menunjukkan jalur soket yang benar. misalnyaps aux | grep mysqld
Bekerja:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
Tidak bekerja:
mysql -uroot -p
mysql -uroot -p -hlocalhost
Anda dapat memperbaiki masalah ini dengan menambahkan garis soket yang sama di bawah [client]
bagian dalam konfigurasi mysql.
Cukup edit /etc/my.cnf
Tambahkan baris berikut kemy.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Mulai ulang mysql dan hubungkan kembali
mysql -u pengguna -p basis data kata sandi -h host;
Periksa apakah layanan mysqld Anda berjalan atau tidak, jika tidak berjalan, mulai layanan.
Jika masalah Anda tidak terpecahkan, cari /etc/my.cnf
dan modifikasi sebagai berikut, di mana Anda melihat baris dimulai dengan socket
. Ambil cadangan file itu sebelum melakukan pembaruan ini.
socket=/var/lib/mysql/mysql.sock
Mengubah
socket=/opt/lampp/var/mysql/mysql.sock -u root
MariaDB, komunitas garpu yang dikembangkan dari MySQL, telah menjadi implementasi default dari MySQL di banyak distribusi.
Jadi pertama-tama Anda harus mulai,
$ sudo systemctl start mariadb
Jika ini gagal, cobalah
$ sudo systemctl start mysqld
Kemudian untuk memulai mysql,
$ mysql -u root -p
Sampai hari ini, di Fedora paket tersebut dinamai mariadb
Dan di Ubuntu disebut mariadb-server
.
Jadi, Anda mungkin harus menginstalnya jika belum diinstal di sistem Anda.
Pastikan Anda memiliki cukup ruang /var
. Jika Mysql iblis tidak dapat menulis info tambahan ke drive, server mysql tidak akan memulai dan mengarah ke kesalahanCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Pertimbangkan untuk menggunakan
expire_logs_days = 10
max_binlog_size = 100M
Ini akan membantu Anda menjaga penggunaan disk tetap rendah.
innodb_buffer_pool_size
di my.cnf
. Menetapkannya ke nilai yang kecil seperti innodb_buffer_pool_size = 50M
adalah ujian yang baik untuk membuang hipotesis ini;)
Silakan periksa apakah layanan mysql lain sedang berjalan.
Pastikan Anda memulai server:
mysql.server start
Kemudian terhubung dengan pengguna root:
mysql -uroot
Jika mysql Anda sebelumnya berfungsi dan tiba-tiba berhenti hanya "reboot" server.
Sedang menghadapi masalah ini pada CentOS VPS saya .->
Terus mendapatkan
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
Mencoba semua teknik, akhirnya me-restart server memperbaiki masalah ->
shutdown -r now
Semoga ini membantu !!
Jika Anda mengubah file di / var / lib / mysql [suka salin atau ganti], Anda harus mengatur pemilik file ke mysql ini sangat penting jika mariadb.service restart telah gagal
chown -R mysql: mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
Pertama masukkan "service mysqld start" dan login
Harap pastikan Anda telah menginstal server MySQL dengan benar, saya menemui kesalahan ini berkali-kali dan saya pikir ini rumit untuk debug dari soket, maksud saya mungkin lebih mudah untuk menginstalnya kembali.
Jika Anda menggunakan CentOS 7, berikut adalah cara yang benar untuk menginstalnya:
Pertama-tama, tambahkan sumber komunitas mysql
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Kemudian Anda dapat menginstalnya dengan yum install mysql-community-server
Mulai dengan systemctl: systemctl start mysqld
Masalah saya adalah saya berhasil menginstal mysql dan berfungsi dengan baik.
Tetapi suatu hari, kesalahan yang sama terjadi.
Tidak dapat terhubung ke server MySQL lokal melalui socket '/var/lib/mysql/mysql.sock' (2)
Dan tidak ada file mysql.sock.
Solusi ini menyelesaikan masalah saya dan mysql sudah aktif kembali:
Masuk sebagai root:
sudo su -
Lari:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
Uji sebagai root:
mysql -u root -p
mysql sekarang harus aktif dan berjalan.
Saya harap ini dapat membantu orang lain juga.
Perhatikan bahwa sementara mysql membaca info lokasi socketfile dari file my.cnf, program mysql_secure_installation tampaknya tidak melakukannya dengan benar pada waktu-waktu tertentu.
Jadi jika Anda seperti saya dan mengacak hal-hal di sekitar saat instalasi Anda mungkin masuk ke situasi di mana Anda dapat terhubung ke database dengan mysql baik-baik saja, tetapi masalahnya tidak dapat diamankan (tidak menggunakan script itu pula).
Untuk memperbaikinya saran dari sreddy berfungsi dengan baik: buatlah softlink dari tempat script mengharapkan soket ke tempat sebenarnya. Contoh:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(Saya menggunakan / tmp / sebagai lokasi default untuk soket)
Salah satu cara untuk mereproduksi kesalahan ini: Jika Anda bermaksud menyambung ke server asing tetapi sebaliknya terhubung ke yang tidak ada:
eric@dev ~ $ mysql -u dev -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock' (2)
eric@dev ~ $
Jadi, Anda harus menentukan host seperti ini:
eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 235
Server version: 5.6.19 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| mysql |
| performance_schema |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
Ini mungkin saran yang bodoh tetapi pastikan 100% DB Anda masih di-host di localhost. Misalnya, jika Admin Jaringan memilih (atau diubah menjadi) hosting Amazon DB, Anda akan memerlukan nama host itu!
Dalam kasus saya, saya mengimpor database baru, dan saya tidak dapat terhubung lagi setelah itu. Akhirnya saya menyadari bahwa itu adalah masalah ruang.
Jadi Anda dapat menghapus database terakhir dan memperluas hard drive Anda atau apa yang saya lakukan, mengembalikan snapshot dari mesin virtual saya.
Untuk berjaga-jaga jika seseorang berpikir itu berguna
Ini adalah masalah jika Anda kehabisan ruang disk. Solusinya adalah dengan membebaskan beberapa ruang dari HDD.
Silakan baca lebih lanjut untuk mendapatkan penjelasan:
Jika Anda menjalankan MySQL di LINUX, periksa ruang kosong HDD dengan disk bebas:
df
jika Anda mendapatkan sesuatu seperti itu:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
Maka ini masalahnya dan sekarang Anda punya solusinya!
Karena mysql.sock ingin dibuat di folder mysql yang hampir selalu di bawah folder root tidak dapat mencapainya karena kurangnya ruang.
Jika Anda secara berkala memberikan perintah ls di bawah direktori mysql (di openSUSE 11.1 di / var / lib / mysql) Anda akan mendapatkan sesuatu seperti:
hostname:/var/lib/mysql #
.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
File mysql.sock sering muncul dan menghilang (Anda harus mencoba membagikan dengan ls untuk memukul sebuah instance dengan file mysql.sock pada folder).
Ini disebabkan oleh tidak cukup ruang disk.
Saya harap saya akan membantu beberapa orang !!!! Terima kasih!
Coba dulu 2, 3 solusi. Kesalahan adalah stil popup & Jika Anda tidak dapat menemukan/var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
Periksa ruang yang tersedia di / var /
df
Jika direktori penuh hapus beberapa file / direktori yang tidak digunakan
rm /var/cache/*
Mungkin masalah Anda akan diurutkan sekarang.
Jika Anda berada di shell sf.net , coba:
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
Ubah {LETTER} dan {ID GROUP} seperti yang ditunjukkan dalam Database MySQL profil admin proyek Anda.