Tidak dapat terhubung ke server MySQL lokal melalui soket '/ tmp/mysql.sock' (2)


143

Saya telah menginstal server MySQL dan mencoba menghubungkannya, tetapi mendapatkan kesalahan:

    Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Saya telah memeriksa direktori / tmp saya dan tidak ada mysql.sock. Saya tidak dapat menemukan mysql.sock di mana pun. Saya membaca bahwa itu mungkin masuk

    /var/lib/mysql/mysql.sock

Tetapi saya memeriksa di sana juga dan bahkan tidak ada direktori mysql, hanya ada beberapa postfix di dalam / lib. Adakah yang bisa membantu saya dengan masalah ini?


2
Saya sedang mengerjakan Mac OS X
user3344382

Halo, dapatkah Anda menempelkan perintah yang Anda gunakan untuk menghubungkan? Anda juga sudah mulai MySQL?
Mark Butler

@MarkButler Saya menggunakan perintah ini: / usr / local / mysql / bin / mysql
user3344382

benar, hanya saja server tidak berjalan. Namun, saya masih tidak bisa mengerti di mana mysql.sock, mungkinkah ada tempat tersembunyi lain di mana ia berada?
user3344382

Kesalahan ini sangat umum, dan bisa karena berbagai alasan. Untuk ringkasan yang rapi lihat di sini: medium.com/@7anac/…
Janac Meena

Jawaban:


272

Cobalah untuk memulai server MySQL:

mysql.server start


44
KESALAHAN! Server berhenti tanpa memperbarui file PID
bastianwegge

1
@wegginho Kemungkinan solusi untuk pesan kesalahan Anda jika Anda menginstal MySQL melalui kesalahan PID
Casey Robinson

lupa memulai layanan mysql!
GeekHades

1
@bastianwegge coba periksa file kesalahan di /usr/local/var/mysql/USERNAME.local.err dalam kasus saya, saya harus menghapus /tmp/mysql.sock lalu mulai kembali menggunakanmysql.server start
Josh Bradley

61

Saya mendapat pertanyaan yang sama setelah memperbarui OS X Yosemite, well solusinya cukup sederhana, periksa preferensi sistem -> mysql, statusnya BERHENTI. Cukup restart dan berfungsi dengan baik di mac saya sekarang.


1
Terima kasih banyak @ @ken begitu sederhana, saya menyia-nyiakan waktu 45 menit untuk mengubah pengaturan pada file my.cnf saya ketika sepanjang waktu ini adalah satu-satunya masalah.
kandroidj

Bekerja untuk saya juga terima kasih, tidak punya ide dalam hal instalasi DMG.
Rameshwar Vyevhare

Sayangnya ini tidak membantu saya
simhumileco

Sederhana dan luar biasa!
Desmond DAI

6
Um, apa? Mengapa System Preferences OSX memiliki opsi MySQL?
AlxVallejo

45

Untuk MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Dari https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

UPDATE: Setiap kali komputer saya restart saya harus memasukkan perintah ini, jadi saya membuat jalan pintas.

Lakukan hal berikut dalam tipe terminal:

~: vi ~/.profile

Menambahkan

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Menyimpan.

Dalam jenis terminal:

~: ... untuk mencari konfigurasi .profile.

Sekarang di terminal Anda cukup mengetik

~: sockit

1
Luar biasa. Hanya perbaikan yang saya cari.
JoshHighland

1
Saya telah kembali ke pos ini beberapa kali dan selalu berhasil.
Trey Copeland

Diupgrade ke mysql 5.7.1 di luar MAMP dan mengalami kesalahan. Ini memperbaikinya untuk saya
David

Jika Anda menggunakan buku mac dan Anda melihat MAMP ini berfungsi
kelrob-dev

32

Perintah berikut menyelesaikan masalah saya:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start

1
Setelah mencari selama 3 jam, ini menyelesaikan masalah saya. Saya baru saja menginstal mysql melalui homebrew dengan brew install mysqltetapi tidak ada perintah homebrew mengatakan kepada saya untuk menjalankan bekerja dengan benar. Ini membuat setiap masalah hilang ... Terima kasih !! Apa sebenarnya baris pertama yang Anda tulis? Apa artinya?
mesqueeb

Terima kasih, Bekerja dengan baik!
Nirojan Selvanathan

1
Hai bagi saya itu: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura

chown -R mengubah pemiliknya -R secara rekursif
Hos Mercury

Sebuah 10.13.1 asli dan homebrew memberikan kesalahan ini ketika menginstal mariadb (10.2.10). Perubahan pemilik ini memperbaikinya, jadi sekarang sudo brew services start mariadbjuga berfungsi untuk memulai mariadb saat boot (tidak hanya saat masuk). YAY! Terima kasih!
iggie

16

Setelah mencoba semua solusi, itu hanya bekerja untuk saya setelah menentukan host

mysql -u root -p -h127.0.0.1

saat meminta kata sandi

Enter password:

tekan enter

dan itu akan berhasil, jika semuanya ok seperti di atas.


2
Saya mengatur mysql dengan wadah buruh pelabuhan dengan menggunakan Docker untuk Mac, dan memetakan port 3306 ke Mac. Tanpa menambahkan -h 127.0.0.1, selalu diminta Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); setelah menambahkan argumen, itu berfungsi dengan baik.
Evi Song

1
Ini karena melalui 127.0.0.1 tidak menggunakan soket, saya pikir. Lebih dari solusi yang sempit.
Lucas Morgan

1
Berjalan mysql -u root -h127.0.0.1 tanpa -pbendera bekerja untuk saya, karena ketika saya menginstal MySQL saya tidak pernah menjalankan mysql_secure_installationperintah. Pemahaman saya adalah bahwa dalam hal ini instalasi default ke kata sandi tidak diperlukan.
Richie Thomas

1
Bekerja seperti pesona!
Panduka DeSilva

10

Setelah berjuang berjam-jam, satu-satunya hal yang berhasil adalah

sudo mysql.server start

Kemudian lakukan instalasi yang aman dengan

mysql_secure_installation 

Kemudian hubungkan ke db via

mysql -uroot -p

Mysql diinstal melalui homebrew dan versinya adalah

Server version: 5.7.21 Homebrew

Menentukan versi mungkin bermanfaat karena solusinya mungkin berbeda berdasarkan versi.


9

Di file konfigurasi mysql Anda, yang ada di /etc/my.cnfbuat perubahan di bawah ini dan kemudian restart mysqldproses dameon

[client]
socket=/var/lib/mysql/mysql.sock

Serta periksa utas terkait ini

Tidak dapat terhubung ke server MySQL lokal melalui soket '/ tmp/mysql.sock


tidak ada file my.cnf di direktori / etc. Saya pikir saya dapat membuat file itu secara manual, tetapi seperti yang saya katakan tidak ada direktori mysql di / var / lib, bagaimana socket bisa ada di sana?
user3344382

Periksa utas terkait yang telah saya posting serta periksa apakah server mysql Anda benar-benar berjalan atau tidak.
Rahul

Saya menemukan file di/etc/mysql/my.cnf
Devon

jika Anda menginstal dengan minuman Anda perlu menggunakan /tmp/mysql.socksebagai lokasi kaus kaki
Mark Shust at M.academy

8

Setelah menyelesaikan masalah saya:

Periksa di mana server MySQL Anda mendengarkan: netstat -nlp Jika mendengarkan TCP, gunakan 127.0.0.1 saat menyambungkan ke DB alih-alih "localhost"

Periksa dokumen MySQL di sini


ini tampaknya bekerja untuk saya dan membuktikan mysql masih hidup tetapi mengapa saya tidak dapat terhubung ke soket lokal?
Colin D

8

Coba ini berhasil bagi saya.

sudo / usr/local/mysql/support-files/mysql.server mulai


Kenapa jalan ini? saat menggunakan perintah "where is mysql" (MAC OS) memberikan output /usr/local/mysql/bin/.Bagaimana mengidentifikasi jalur ini di Mac?
Vineeth Bhaskaran

Ya, jalannya berubah
vasanth vasu

4

Jika Anda menggunakan XAMPP di Mac OS X dan telah menginstal MySQL dengan Homebrew, Anda mungkin memiliki masalah ini. Di jendela manajer XAMPP, masuk ke Manage Server dan pilih MySQL, lalu klik configure dan buka file konfigurasi, di sana Anda memiliki path file socket, letakkan path di konfigurasi host MySQL Anda dan itu harus bekerja.

Ini sesuatu seperti ini:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

kemudian, misalnya di Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

Semoga ini membantu.


3

Pertama, mengetahui di mana direktori data bagi saya adalah kuncinya. /usr/local/var/mysql Di sini, setidaknya ada satu file dengan ekstensi .err diawali dengan nama mesin lokal saya. Itu semua info yang saya butuhkan untuk mendiagnosis.

Saya pikir saya mengacaukannya dengan menginstal mysql 8 terlebih dahulu. Aplikasi saya tidak kompatibel dengan itu jadi saya harus menurunkan versi kembali ke 5.7

Solusi saya yang berhasil adalah pergi ke /usr/local/etc/my.cnf

Cari baris ini jika ada di sana. Saya pikir terkait mysql 8:

mysqlx-bind-address = 127.0.0.1 

Hapus itu karena di mysql 5.7 mengatakan itu tidak suka di log kesalahan

Tambahkan juga baris ini di sana jika tidak ada di bawah bind-address.

socket=/tmp/mysql.sock

Pergi ke /tmpdirektori dan hapus semua file mysql.sock di sana. Pada awal server, itu akan membuat ulang file kaus kaki

Buang direktori data dengan mySQL dalam status berhenti. Milik saya /usr/local/var/mysql. Ini adalah tempat yang sama di mana log berada

Dari sana saya lari

>mysqld --initialize

Kemudian semuanya mulai berfungsi ... perintah ini akan memberi Anda kata sandi acak di akhir. Simpan kata sandi itu untuk langkah selanjutnya

Menjalankan ini untuk menetapkan kata sandi saya sendiri.

>mysql_secure_installation 

Kedua

>brew services stop mysql@5.7

dan

>mysql.server start

sekarang bekerja. Semoga ini membantu. Sekitar 3 jam coba-coba.


3

Jenis Pertama ini-:

brew services start mysql

Lalu ini -:

mysql -uroot

0

Saya telah menghabiskan banyak waktu melakukan ini saya ingin meletakkan aplikasi Django saya di server saya dan ketika saya menjalankan python manage.py migratesaya bertemu pertanyaan ini

Dan!! Saya mengatur ini ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock akhirnya berhasil!



0

Berhenti dan memulai server mysql dari terminal menyelesaikan masalah saya. Di bawah ini adalah cmds untuk berhenti dan memulai server mysql di MacOs.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Catatan: Restart layanan dari preferensi Sistem Mac tidak menyelesaikan masalah di mac saya. Jadi cobalah untuk memulai kembali dari terminal.


0

Jika Anda menjalankan pada macOS, lebih mudah untuk pertama-tama memeriksa pergi ke 'System Preferences' dan lihat apakah MySQL berjalan atau tidak.


-1

Untuk CentOS, file untuk init mysql ada di sini:

/etc/init.d/mysqld start
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.