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.
Dalam hal ini, Anda mungkin harus memeriksa apakah server MYSQL Anda benar-benar berjalan.
Jan Thomä
3
Anda juga dapat memaksa menggunakan soket dengan parameter soket (-S dengan / usr / bin / mysql) dan memaksa TCP / IP dengan menyediakan port (-P dengan / usr / bin / mysql.)
Kaoru
Menggunakan nama jaringan yang sepenuhnya memenuhi syarat selain localhost bekerja untuk saya. Pastikan itu dinyatakan dalam file 'host' sisi klien.
Fabien Haddadi
2
Catatan untuk pengguna cygwin: jika klien cygwin mysql mencoba menghubungkan ke server mysql WAMP lokal misalnya, gunakan -h <hostname selain localhost>. Jangan mencoba membuat file mysql.sock dan mendeklarasikannya dalam file my.cnf apa pun, itu tidak akan berfungsi.
Fabien Haddadi
Nama host yang salah memang memberi saya kesalahan yang sama persis. Melihat /etc/hostsfile dalam wadah buruh pelabuhan menunjukkan kepada saya nama host MySql mysql. Menggunakan nama host yang sama ini di konfigurasi koneksi saya menyelesaikan masalah.
Stephane
188
Pastikan layanan mysql Anda berjalan
service mysqld start
Kemudian, coba salah satu dari yang berikut ini:
(jika Anda belum menetapkan kata sandi untuk mysql)
Ini jawaban untuk saya. Karena saya menggunakan mariadb solusinya adalah menjalankan yang berikut ini: "sudo systemctl start mariadb". Semua baik-baik saja setelah itu.
Mohsen,
Beri @Zahra medali
Ahmed C
28
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:
mengganti nama mysql.sock menjadi sesuatu yang lain, kemudian me-restart mysqld ("service mysqld restart"), kemudian mengubah nama sesuatu yang lain kembali ke mysql.sock bekerja untuk saya. Sedikit variasi pada jawaban ini, terima kasih.
Analisis Fuzzy
Jawaban ini dapat membantu menemukan mysql.sockfile
Nobita
15
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:
FYI ini bekerja untuk CentOS 8.1 juga. Setelah menginstal mariadb-serverdan mariadb, jangan lupa untuk menjalankan mysql_secure_installationuntuk membersihkan beberapa pengaturan default tidak aman.
Dio Phung
13
Dalam kasus saya, saya telah memindahkan file socket ke lokasi lain di dalam /etc/my.cnf
dari /var/lib/mysql/mysql.sockke/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.
Satu-satunya jawaban yang benar. Saya bertanya-tanya mengapa itu tidak cukup suara.
CentAu
11
Periksa apakah layanan mysqld Anda berjalan atau tidak, jika tidak berjalan, mulai layanan.
Jika masalah Anda tidak terpecahkan, cari /etc/my.cnfdan modifikasi sebagai berikut, di mana Anda melihat baris dimulai dengan socket. Ambil cadangan file itu sebelum melakukan pembaruan ini.
Hai Sekar, saya memasukkan "find / -name my.cnf", dan saya mendapat dua lokasi. 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Jadi, mana yang harus digunakan .. Saya bertanya di sini .. stackoverflow.com/questions/32437796/…
Nana Partykar
7
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.
Terima kasih, saya menjalankan mysql di oracle virtualbox dan ketika saya membuat dump dari bd saya, saya kehabisan ruang, dan tidak bisa mendapatkan server mysql untuk memulai, ketika saya menghapus file dump saya bisa me-restart server mysql.
JayCee
1
Ini menyelesaikannya untuk saya. Saya telah menetapkan innodb_buffer_pool_size ke nilai yang sangat tinggi untuk lingkungan produksi dan itu membuat mysql crash pada mesin virtual saya.
Benjamin Brizzi
1
Aku punya masalah ini ketika menggunakan phabricator dan solusinya adalah untuk mengubah innodb_buffer_pool_sizedi my.cnf. Menetapkannya ke nilai yang kecil seperti innodb_buffer_pool_size = 50Madalah ujian yang baik untuk membuang hipotesis ini;)
Yercalamarino
Itu masalah yang menakutkan, memeriksa semuanya kecuali ruang disk. Ruang bebas dari / var, kembali!
Nadjib Mami
5
Inilah yang bekerja untuk saya:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
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
apa yang ingin Anda katakan? tolong baca faq sebelum mengajukan pertanyaan di sini
Freak
Pertanyaan ini berhasil dijawab tiga tahun lalu. Jawaban persis ini diberikan lebih lengkap tahun lalu.
Cairnarvon
2
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
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 endwith;or\g.
Your MySQL connection id is235
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 |+-------------------------+3rowsinset(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!
Saya menggunakan penyedia hosting 1and1 dan mendapatkan kesalahan ini setelah ssh-ing ke tuan rumah. Cara mengatasinya hanya untuk memberikan nama host "mysql -u dbo70123521 -p --host db70313321.db.1and1.com db703133520"
rob
1
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
mengalami masalah ini ketika mencoba untuk menghubungkan mysql di klien SSH, ditemukan menambahkan jalur soket ke perintah yang membantu ketika beralih di antara soket diperlukan.
> mysql -u user-p --socket=/path/to/mysql5143.sock
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 516282849022600100%/
udev 156676841565921%/dev
/dev/sda3 31071247084428784443%/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!
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.
sumber
/etc/hosts
file dalam wadah buruh pelabuhan menunjukkan kepada saya nama host MySqlmysql
. Menggunakan nama host yang sama ini di konfigurasi koneksi saya menyelesaikan masalah.Pastikan layanan mysql Anda berjalan
Kemudian, coba salah satu dari yang berikut ini:
(jika Anda belum menetapkan kata sandi untuk mysql)
jika Anda sudah mengatur kata sandi
sumber
service mariadb start
karena mariadb.org/debian-9-released-mariadb-mysql-variantJika file Anda my.cnf (biasanya di folder dll) sudah dikonfigurasi dengan benar
Anda dapat memeriksa apakah mysql berjalan dengan perintah berikut:
coba ubah izin Anda ke folder mysql. Jika Anda bekerja secara lokal, Anda dapat mencoba:
yang menyelesaikannya untukku
sumber
Server MySQL tidak berjalan, atau itu bukan lokasi file soketnya (periksa my.cnf).
sumber
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:
Itu memecahkan masalah saya
sumber
mysql.sock
fileJika Anda menggunakan RHEL baru-baru ini, Anda mungkin perlu memulai mariadb (open source mysql db) alih-alih mysql db:
Anda kemudian dapat mengakses mysql dengan cara yang biasa:
sumber
mariadb-server
danmariadb
, jangan lupa untuk menjalankanmysql_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. misalnya
ps aux | grep mysqld
Bekerja:
Tidak bekerja:
Anda dapat memperbaiki masalah ini dengan menambahkan garis soket yang sama di bawah
[client]
bagian dalam konfigurasi mysql.sumber
Cukup edit
/etc/my.cnf
Tambahkan baris berikut kemy.cnf
Mulai ulang mysql dan hubungkan kembali
sumber
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 dengansocket
. Ambil cadangan file itu sebelum melakukan pembaruan ini.Mengubah
sumber
MariaDB, komunitas garpu yang dikembangkan dari MySQL, telah menjadi implementasi default dari MySQL di banyak distribusi.
Jadi pertama-tama Anda harus mulai,
Jika ini gagal, cobalah
Kemudian untuk memulai mysql,
Sampai hari ini, di Fedora paket tersebut dinamai
mariadb
Dan di Ubuntu disebutmariadb-server
.Jadi, Anda mungkin harus menginstalnya jika belum diinstal di sistem Anda.
sumber
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
Ini akan membantu Anda menjaga penggunaan disk tetap rendah.
sumber
innodb_buffer_pool_size
dimy.cnf
. Menetapkannya ke nilai yang kecil sepertiinnodb_buffer_pool_size = 50M
adalah ujian yang baik untuk membuang hipotesis ini;)Inilah yang bekerja untuk saya:
sumber
Silakan periksa apakah layanan mysql lain sedang berjalan.
sumber
Pastikan Anda memulai server:
Kemudian terhubung dengan pengguna root:
sumber
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 !!
sumber
mencoba
sumber
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
sumber
Pertama masukkan "service mysqld start" dan login
sumber
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
sumber
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:
Lari:
Uji sebagai root:
mysql sekarang harus aktif dan berjalan.
Saya harap ini dapat membantu orang lain juga.
sumber
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:
(Saya menggunakan / tmp / sebagai lokasi default untuk soket)
sumber
Ini bekerja untuk saya dengan perubahan berikut
Apa pun jalur untuk soket disebutkan di [mysqld] dan sama di [client] di my.cnf dan restart mysql
[mysqld] socket = / var / lib / mysql / mysql.sock
[client] socket = / var / lib / mysql / mysql.sock
sumber
Salah satu cara untuk mereproduksi kesalahan ini: Jika Anda bermaksud menyambung ke server asing tetapi sebaliknya terhubung ke yang tidak ada:
Jadi, Anda harus menentukan host seperti ini:
sumber
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!
sumber
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
sumber
mengalami masalah ini ketika mencoba untuk menghubungkan mysql di klien SSH, ditemukan menambahkan jalur soket ke perintah yang membantu ketika beralih di antara soket diperlukan.
sumber
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:
jika Anda mendapatkan sesuatu seperti itu:
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:
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!
sumber
Saya harus menonaktifkan
explicit_defaults_for_timestamp
dari my.cnf.sumber
Coba dulu 2, 3 solusi. Kesalahan adalah stil popup & Jika Anda tidak dapat menemukan
/var/lib/mysql/mysql.sock
Periksa ruang yang tersedia di / var /
Jika direktori penuh hapus beberapa file / direktori yang tidak digunakan
Mungkin masalah Anda akan diurutkan sekarang.
sumber
Jika Anda berada di shell sf.net , coba:
Ubah {LETTER} dan {ID GROUP} seperti yang ditunjukkan dalam Database MySQL profil admin proyek Anda.
sumber