Saya baru-baru ini mencoba menginstal MySQL dengan homebrew ( brew install mysql
) dan ketika saya mencoba menjalankannya, saya mendapatkan kesalahan berikut:
ERROR 2002 (HY000): Tidak dapat terhubung ke server MySQL lokal melalui soket '/tmp/mysql.sock' (2)
Tidak ada /tmp/mysql.sock
atau a /var/lib/mysql.sock
.
Saya telah mencari dan belum menemukan mysql.sock
file apa pun .
Bagaimana cara memperbaikinya?
mysqld
untuk memeriksa berbagai hal dan memastikan MySQL dimatikan dengan benar terakhir kali. Jika mengalami shutdown 'kotor' (misalnya jika baterai laptop memaksa sistem mati) ini harus membersihkannya. Kemudian Anda dapat mulai server MySQL lagi:mysql.server start
.Jawaban:
Saat Anda menjalankan server melalui
Anda akan melihat soket di /tmp/mysql.sock . Namun, sistem tampaknya mengharapkannya di /var/mysql/mysql.sock . Untuk memperbaikinya, Anda harus membuat symlink di / var / mysql :
Ini menyelesaikannya untuk saya. Sekarang phpMyAdmin saya bekerja dengan baik dengan localhost dan 127.0.0.1 .
Penghargaan diberikan kepada Henry
sumber
mysql.server start
saya mendapatkanERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)
. Saya membutuhkan versi MySQL yang lebih lama, diinstal melaluibrew install [email protected]
.mysql.server start
memperbaikinya untuk sayaSepertinya server mysql Anda belum dimulai. Saya biasanya menjalankan perintah stop dan kemudian memulainya lagi:
Kesalahan yang sama, dan ini berhasil untuk saya.
sumber
mysqld &
per komentar di atas, tetapi saya pikir itu mungkin akan melakukan hal yang sama karenamysqld stop
saya cukup yakin dalam kasus saya itu karena shutdown yang tidak tepat.Saya memiliki beberapa direktori yang tersisa dari instalasi mysql (8.0) lain, yang tidak dihapus.
Saya menyelesaikan ini dengan melakukan hal berikut:
Pertama uninstall mysql
Hapus folder / file yang tidak dihapus
Instal ulang mysql dan tautkan
Aktifkan dan mulai layanan
sumber
Coba sambungkan menggunakan "127.0.0.1", bukan "localhost".
sumber
1) Jika Anda dapat melihat "mysql berhenti" saat Anda menjalankan perintah di bawah ini;
2) dan jika Anda dapat memulai mysql dengan perintah di bawah ini;
ini berarti; mysql dapat dijalankan secara manual, tetapi tidak dimulai secara otomatis saat sistem operasi dijalankan. Menambahkan mysql ke layanan akan memperbaiki masalah ini. Untuk melakukannya, Anda dapat menjalankan perintah di bawah ini;
Setelah itu, Anda dapat memulai ulang sistem operasi Anda dan mencoba menghubungkan ke mysql untuk melihat apakah itu dimulai secara otomatis. Saya melakukan hal yang sama dan berhenti menerima kesalahan di bawah ini;
Saya harap ini membantu.
sumber
File
/tmp/mysql.sock
tersebut mungkin bernama Named-Pipe, karena berada di folder sementara. Pipa bernama adalah File-Khusus yang tidak pernah disimpan secara permanen.Jika kita membuat dua program, dan kita ingin satu program mengirim pesan ke program lain, kita bisa membuat file teks. Kami memiliki satu program yang menulis sesuatu di file teks dan program lain membaca apa yang program lain tulis. Itulah arti pipa, kecuali ia tidak menulis file ke hard disk komputer kita, IE tidak menyimpan file secara permanen (seperti yang kita lakukan ketika kita membuat file dan menyimpannya.)
Soket sama persis dengan Pipa. Perbedaannya adalah Soket biasanya digunakan melalui jaringan - antar komputer. Socket mengirimkan informasi ke komputer lain, atau menerima informasi dari komputer lain. Baik Pipes maupun Sockets menggunakan file sementara untuk dibagikan sehingga mereka dapat 'berkomunikasi'.
Sulit untuk membedakan mana yang digunakan MySql dalam kasus ini. Tidak masalah.
Perintah tersebut
mysql.server start
harus membuat 'server' (program) menjalankan loop tak terbatasnya yang akan membuat file khusus itu dan menunggu perubahan (listen
untuk penulisan).Setelah itu, masalah umum mungkin adalah program MySql tidak memiliki izin untuk membuat file di komputer Anda, jadi Anda mungkin harus memberikannya hak akses root.
sumber
mysql.server start
,mysql.server stop
dan kemudian memulai layanan melalui homebrew lagibrew services start [email protected]
dan semuanya berjalan lancar.Setelah menginstal macos mojave, harus menghapus folder mysql di bawah
/usr/local/var/mysql
dan kemudian menginstal ulang melaluibrew install mysql
jika tidak, hal-hal terkait izin akan muncul di semua tempat.sumber
/usr/local/var/mysql
Anda juga akan menghapus semua database yang ada!Saya mendapat kesalahan yang sama dan inilah yang membantu saya:
sumber
Hanya untuk menambah jawaban ini, Dalam kasus saya, saya tidak memiliki server mySQL lokal, itu berjalan di dalam wadah buruh pelabuhan. Jadi file socket tidak ada dan tidak akan bisa diakses oleh klien "mysql".
File sock dibuat oleh mysqld dan mysql menggunakan ini untuk berkomunikasi dengannya. Namun jika server mySql Anda tidak berjalan lokal, itu tidak memerlukan file sock.
Dengan menentukan nama host / ip file kaus kaki tidak diperlukan misalnya
sumber
Karena saya menghabiskan cukup banyak waktu untuk mencoba menyelesaikan ini dan selalu kembali ke halaman ini ketika mencari kesalahan ini, saya akan meninggalkan solusi saya di sini dengan harapan seseorang menghemat waktu saya yang hilang. Meskipun dalam kasus saya, saya menggunakan mariadb daripada MySql, Anda mungkin masih dapat menyesuaikan solusi ini dengan kebutuhan Anda.
Masalahku
sama, tetapi penyiapan saya sedikit berbeda (mariadb, bukan mysql):
Memasang mariadb dengan homebrew
Memulai daemon
Mencoba menyambungkan dan mendapatkan kesalahan yang disebutkan di atas
Solusi saya
cari tahu
my.cnf
file mana yang digunakan olehmysql
(seperti yang disarankan dalam komentar ini ):periksa di mana file socket Unix berjalan (hampir seperti yang dijelaskan di sini ):
(Anda mungkin ingin
grep mysql
daripada mariadb)Tambahkan file soket yang Anda temukan
~/.my.cnf
(buat file jika perlu) (dengan asumsi~/.my.cnf
terdaftar saat menjalankanmysql --verbose ...
perintah-dari atas):Mulai ulang mariadb Anda:
Setelah ini saya bisa menjalankan mysql dan mendapatkan:
Jadi saya menjalankan perintah dengan hak superuser sebagai gantinya dan setelah memasukkan kata sandi saya, saya mendapat:
Catatan:
Saya tidak begitu yakin tentang grup di mana Anda harus menambahkan soket, pertama saya memilikinya [client-server] tetapi kemudian saya pikir [klien] sudah cukup. Jadi saya mengubahnya dan masih berfungsi.
Saat menjalankan
mariadb_config | grep socket
saya mendapatkan:--socket [/tmp/mysql.sock]
yang agak membingungkan karena tampaknya itu/usr/local/mariadb/data/mariadb.sock
adalah tempat sebenarnya (setidaknya di mesin saya)Saya bertanya-tanya di mana saya dapat mengonfigurasi
/usr/local/mariadb/data/mariadb.sock
agar benar-benar menjadi/tmp/mysql.sock
sehingga saya dapat menggunakan pengaturan default daripada harus mengedit saya.my.cnf
(tetapi saya terlalu lelah sekarang untuk mengetahuinya ...)Pada titik tertentu saya juga melakukan hal-hal yang disebutkan dalam jawaban lain sebelum mengajukan ini.
sumber
Anda harus menjalankan
mysql_install_db
- cara termudah adalah jika Anda berada di direktori instal:Atau, Anda dapat memberi makan
mysql_install_db
sebuahbasedir
parameter seperti berikut:sumber
Saya menghadapi masalah yang sama di mac saya dan menyelesaikannya, dengan mengikuti tutorial berikut
https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew
Tetapi jangan lupa untuk mematikan atau menghapus versi lama sebelum melanjutkan.
Perintah:
sumber
Setelah restart, saya tidak dapat terhubung dengan mariadb lokal, pencarian juga membawa saya ke halaman ini dan saya ingin membagikan solusi saya kepada Anda.
Saya perhatikan bahwa direktori my.cnf.d di / usr / local / etc / hilang.
Ini adalah bug yang dikenal dengan homebrew yang dijelaskan dan diselesaikan di sana. https://github.com/Homebrew/homebrew-core/issues/36801
cara cepat untuk memperbaikinya: mkdir /usr/local/etc/my.cnf.d
sumber
brew update
dan mulai ulang.brew services list
Hasilnya menunjukkan status mariadbstarted
dengan warna kuning. Terima kasih atas tipnya.Saat menjalankan mysql_secure_installation dan memasukkan kata sandi baru yang saya dapatkan:
Saya perhatikan ketika mencoba yang berikut dari jawaban ini :
Itu tidak mengembalikan apa pun, dan saya mengartikannya bahwa tidak ada file .sock.
Jadi, saya menambahkan yang berikut ini ke file my.cnf saya (baik di /etc/my.cnf atau dalam kasus saya, /usr/local/etc/my.cnf ).
Dibawah:
Dibawah:
Ini didasarkan pada posting ini .
Kemudian hentikan / mulai mysql lagi dan coba lagi mysql_secure_installation yang akhirnya membiarkan saya memasukkan kata sandi root baru saya dan melanjutkan dengan preferensi pengaturan lainnya.
Saya harap ini membantu seseorang. Sobat, aku benci hal ini ...
sumber
hanya untuk menyelesaikan utas ini. oleh karena itu MAMP (PRO) cukup sering digunakan
jalannya di sini
sumber
Saya secara manual memulai mysql di panel preferensi sistem dengan menginisialisasi database dan kemudian memulainya. Ini memecahkan masalah saya.
sumber
Dalam kasus saya, pelakunya ditemukan di file log:
Jadi saya mengganti nama
ib_logfile0
untuk menghilangkan kesalahan (saya harus melakukan hal yang samaib_logfile1
setelah itu).sumber
Saya memiliki masalah yang sama. Setelah mencoba semua metode ini tanpa hasil, saya melakukan hal berikut:
di konsol lain:
Saya melihat kesalahan berikut:
Jadi saya mengubah
tc.log
ekstensi menjaditc.log.txt
dan memulai ulang mariadbdan selesai!
sumber
Ini bekerja untuk saya:
Terima kasih
sumber
Bagi saya, saya sudah
mariadb
lama menginstal , lalu menginstal[email protected]
.Ketika saya mengeksekusi
mysql -uroot
, saya mendapatkan error:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Membaca jawabannya:
mariadb
/usr/local/var/mysql
mysqld --initialize
Kemudian saya bisa
mysql -uroot -p
sumber
rm -rf / usr / local / var / mysql / ib_logfile *
sumber