Saya mengalami masalah besar ketika mencoba terhubung ke mysql. Ketika saya menjalankan:
/usr/local/mysql/bin/mysql start
Saya memiliki kesalahan berikut:
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
Saya punya di mysql.sock
bawah /var/mysql
direktori.
Dalam /etc/my.cnf
aku punya:
[client]
port=3306
socket=/var/mysql/mysql.sock
[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M
dan /etc/php.ini
aku punya:
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock
Saya telah memulai kembali apache menggunakan sudo /opt/local/apache2/bin/apachectl restart
Tapi saya masih punya kesalahan.
Kalau tidak, saya tidak tahu apakah itu relevan tetapi kapan mysql_config --sockets
saya mendapatkannya
--socket [/tmp/mysql.sock]
/var/log/mysql
atau di suatu tempat di sekitar) yang menunjukkan mengapa itu tidak berjalan? Apakah Anda mendapatkan kesalahan saat Anda mencoba memulainya?service mysqld start
jika Anda baru saja menginstal. hthsudo service mysql start
menyelamatkan sayaJawaban:
Jika file Anda my.cnf (biasanya di folder / etc / mysql / ) 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
mysqld
layanan.Anda yakin telah menginstal mysql dan juga server mysql ..
Sebagai contoh untuk menginstal server mySql saya akan menggunakan yum atau apt untuk menginstal alat baris perintah mysql dan server:
Aktifkan layanan MySQL:
Mulai server MySQL:
setelah itu setel kata sandi root MySQL:
Saya harap ini membantu.
sumber
brew install mysql
sudo apt-get install mysql-server
hidup itu baikCan't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
dari klien? Klien mencoba dan gagal terhubung, bukan? (Saya pikir pertanyaan awal perlu diedit untuk menjelaskan itu).Solusi cepat yang berfungsi untuk saya: coba gunakan alamat ip lokal (127.0.0.1) alih-alih 'localhost' di mysql_connect (). Ini "memaksa" php untuk terhubung melalui TCP / IP bukannya soket unix.
sumber
localhost
dan menyelesaikannya127.0.0.1
sebelum mencoba menghubungkan?Saya mendapat kesalahan berikut
Mencoba beberapa cara dan akhirnya menyelesaikannya melalui cara berikut
diubah
untuk
dan memulai kembali
itu berhasil
sumber
localhost
memperbaikinya.Pastikan Anda menjalankan mysqld:
/etc/init.d/mysql start
sumber
sudo service mysql start|restart
untuk Ubuntu.Untuk mencegah masalah terjadi, Anda harus melakukan shutdown server yang anggun dari baris perintah daripada mematikan server.
Ini akan menghentikan layanan yang berjalan sebelum mematikan mesin.
Berdasarkan Centos, metode tambahan untuk mendapatkannya kembali ketika Anda mengalami masalah ini adalah memindahkan mysql.sock:
Restart layanan menciptakan entri baru yang disebut mqsql.sock
sumber
Saya mendapatkan kesalahan ini ketika saya mengatur tugas cron untuk file saya. Saya mengubah izin file menjadi 777 tetapi tetap tidak berfungsi untuk saya. Akhirnya saya mendapat solusinya. Mungkin itu akan bermanfaat bagi orang lain.
Coba dengan perintah ini:
Ingat bahwa -h berarti host , -P berarti port dan -p berarti kata sandi.
sumber
-p
tidak berarti port , itu berarti kata sandi , Anda telah mengacaukannya dengan-P
mysql -h 127.0.0.1 -u root -p
Seperti yang dapat dilihat oleh banyak jawaban di sini, ada banyak masalah yang dapat mengakibatkan pesan kesalahan ini ketika Anda memulai layanan MySQL. Masalahnya, MySQL biasanya akan memberi tahu Anda apa yang salah, jika Anda hanya melihat file log yang sesuai.
Misalnya, di Ubuntu, Anda harus memeriksa
/var/log/syslog
. Karena banyak hal lain mungkin juga masuk ke file ini, Anda mungkin ingin menggunakangrep
untuk melihat pesan mysql, dantail
hanya melihat yang terbaru. Secara keseluruhan, itu mungkin terlihat seperti:grep mysql /var/log/syslog | tail -50
Jangan membabi buta membuat perubahan pada konfigurasi Anda karena orang lain berkata 'Ini bekerja untuk sistem saya.' Cari tahu apa yang sebenarnya salah dengan sistem Anda dan Anda akan mendapatkan hasil yang lebih baik lebih cepat.
sumber
.cnf
. Itu menjelaskannya. Sekarang saya bisa berhenti mencoba hal-hal acak dan mengatasi masalah yang sebenarnya. Terima kasih.Solusi lain adalah mengedit /etc/my.cnf dan menyertakan host di bagian [klien]
Dan kemudian me-restart layanan mysql.
Solusi ini diuji dalam: Versi server: Distribusi sumber 5.5.25a-log
sumber
Saya memiliki masalah yang sama dan itu disebabkan oleh pembaruan driver mysql ketika server mysql berjalan. Saya memperbaikinya hanya me-restart mysql dan apache2:
sumber
mysql
tidak berjalan. Saya berlarisudo service mysql start
setelah berlarisudo service mysql status
untuk memverifikasi itu tidak berjalan.Dalam kasus saya, saya menggunakan Centos 5.5. Saya menemukan bahwa masalahnya adalah karena layanan mysql dihentikan. Jadi saya memulai layanan mysql dengan perintah:
Jadi .. kesalahan konyol.
sumber
Jika semuanya bekerja dengan baik dan Anda baru saja mulai melihat kesalahan ini, sebelum Anda melakukan hal lain, pastikan Anda tidak kehabisan ruang disk:
Jika volume tempat mysql.sock sedang dibuat adalah 100% digunakan, MySql tidak akan dapat membuatnya dan ini akan menjadi penyebab kesalahan ini. Yang perlu Anda lakukan adalah menghapus sesuatu yang tidak diperlukan, seperti file log lama.
sumber
coba dengan -h (host) dan -P (port):
mysql -h 127.0.0.1 -P 3306 -u root -p
sumber
Ini akan melayani Anda dengan baik. Mungkin ada kemungkinan Anda mengubah beberapa perintah yang memengaruhi konfigurasi mysql.
sumber
systemctl start mariadb.service
di Fedora 22 atau RedHat 7. Setelah itu dimungkinkan untuk mengatur kata sandi root.Ada banyak solusi untuk masalah ini tetapi untuk situasi saya, saya hanya perlu memperbaiki DATE pada mesin / server ( Ubuntu 16.04 Server ).
i) Periksa tanggal server Anda dan perbaiki.
ii) Lari
sudo /etc/init.d/mysql restart
Itu harus memulainya.
sumber
Saya mendapatkan kesalahan karena saya menjalankan MAMP dan file .sock saya berada di lokasi yang berbeda. Saya baru saja menambahkan tautan simbolis di mana aplikasi berpikir seharusnya menunjuk ke tempat itu sebenarnya dan itu berfungsi seperti pesona.
sumber
Saya juga menemukan bahwa ini adalah masalah izin. Saya membandingkan file MySQL dengan instalasi yang berfungsi (keduanya pada Debian 6 squeeze) dan harus membuat perubahan kepemilikan berikut (di mana
mydatabase
ada database yang Anda miliki).Kepemilikan
mysql:mysql
:Kepemilikan
mysql:root
:Kepemilikan
mysql:adm
:sumber
Bagi saya - ini hanyalah kasus MySQL yang membutuhkan waktu lama untuk dimuat. Saya memiliki lebih dari 100.000 tabel di salah satu basis data saya dan akhirnya mulai tetapi jelas harus memakan waktu lama dalam hal ini.
sumber
Jika Anda menggunakan AWS (Amazon Web Services) versi Mikro, maka itu adalah masalah memori. Ketika saya berlari
dari terminal katanya
Jadi saya mencoba yang berikut dan itu hanya akan gagal.
Setelah banyak pencarian, saya menemukan bahwa Anda harus membuat file swap agar MySQL memiliki cukup memori. Instruksi terdaftar: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html .
Kemudian, saya bisa me-restart mysqld.
sumber
Anda selalu dapat memulai server mysql dengan menentukan lokasi file mysql.sock menggunakan
--socket
opsi sepertiIni akan berfungsi bahkan jika lokasi file socket di tentukan di lokasi yang berbeda di file my.cnf.
sumber
Bagi mereka yang solusinya tidak berhasil, coba:
periksa apakah my.cnf ada
dan pastikan Anda hanya memiliki satu bind-address sebagai berikut:
bind-address = 127.0.0.1
Jika tidak, itu mungkin masalahnya, keluar saja dari nano dan simpan file.
dan
service mysql start
Perhatikan bahwa jika Anda tidak memiliki nano (editor teks) cukup instal dengan
apt-get install nano
dan sekali saja tekan Ctrl + X untuk keluar, jangan lupa untuk mengatakan Y untuk menyimpan dan menggunakan file yang sama)sumber
Saya punya masalah ini juga ketika mencoba untuk memulai server, begitu banyak jawaban di sini yang hanya mengatakan untuk memulai server tidak berfungsi. Hal pertama yang dapat Anda lakukan adalah menjalankan yang berikut untuk melihat apakah ada kesalahan konfigurasi:
Saya memang memiliki satu kesalahan yang muncul:
Sederhana
grep -HR "innodb-online-alter-log-max-size" /etc/mysql/
menunjukkan kepada saya file apa yang berisi baris yang menyinggung, jadi saya menghapus baris itu dari file.Kemudian, memeriksa
/var/log/mysql/error.log
file saya, saya punya:Berdasarkan pertanyaan ini solusi yang diterima tidak akan berfungsi karena saya bahkan tidak bisa memulai server, jadi saya mengikuti apa yang dikatakan beberapa komentar dan menghapus saya
/var/lib/mysql/ib_logfile0
dan/var/lib/mysql/ib_logfile1
file .Ini memungkinkan server untuk memulai dan saya dapat terhubung dan mengeksekusi query, namun memeriksa file log kesalahan saya dengan cepat diisi dengan beberapa puluhan ribu baris seperti ini:
Berdasarkan saran dari sini , untuk memperbaikinya, saya melakukan mysqldump dan memulihkan semua basis data (lihat tautan untuk beberapa solusi lain).
Semuanya tampak berfungsi seperti yang diharapkan sekarang.
sumber
/var/log/mysql/error.log
membantu dalam kasus saya. Ada[ERROR] Can't init tc log
yang dengan cepat diperbaiki menggunakan jawaban berikut: dba.stackexchange.com/a/185006/163583Menambahkan
ke daftar pramaters di koneksi Anda bekerja untuk saya.
sumber
Ini cukup baik untukku
sumber
Saya mengalami masalah ini hari ini. Tak satu pun dari jawaban ini memberikan perbaikan. Saya perlu melakukan perintah berikut (ditemukan di sini https://stackoverflow.com/a/20141146/633107 ) untuk memulai layanan mysql saya:
Ini sebagian ditunjukkan oleh kesalahan berikut di /var/log/mysql/error.log:
Saya juga melihat disk penuh kesalahan, tetapi hanya ketika menjalankan perintah tanpa sudo. Jika pemeriksaan izin gagal, ini melaporkan disk penuh (bahkan ketika partisi Anda bahkan tidak mendekati penuh).
sumber
CentOS 7, 64 bit. Instalasi baru.
Dalam kasus saya, kesalahannya adalah karena saya tidak memiliki server MySQL yang tepat dan klien MySQL diinstal.
Menggunakan
yum
, saya menghapusmariadb
dan edisi mysql-komunitas. Saya mengunduh rpm untuk klien dan server dari situs web resmi MySQL dan menginstal server dan klien.Saat menginstal server, saya diperlihatkan pesan bahwa kata sandi ke akun root untuk MySQL disimpan dalam file yang dapat saya lihat dengan
sudo cat /root/.mysql_secret
.Jadi setelah menginstal klien dan server, saya memeriksa apakah MySQL berfungsi (saya pikir saya reboot sebelum melakukannya) dengan perintah
sudo service mysql status
dan saya mendapat hasilnya.Saya login ke MySQL menggunakan password dari file .mysql_secret:
mysql -uroot -pdxM01Xfg3DXEPabpf
. Perhatikan bahwadxM01Xfg3DXEPabpf
kata sandi yang disebutkan dalam file .mysql_secret.dan kemudian diketik masukkan perintah berikut di prompt mysql untuk mengubah kata sandi root:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');
Semuanya bekerja dengan baik sejak saat itu.
sumber
Bekerja untuk saya, saya menggunakan Centos
sumber
Ini tidak langsung menjawab pertanyaan Anda tetapi sebagian, yaitu menggunakan PythonAnywhere. Saya terus menemukan pertanyaan ini ketika mencari perbaikan jadi saya menambahkannya di sini dengan harapan itu akan membantu orang lain dalam situasi saya.
PythonAnywhere memutuskan untuk mengubah nama host koneksi database untuk meningkatkan efisiensi dan keandalan, sebagaimana dirinci di sini :
Karenanya, Anda perlu memperbarui nama host Anda ke nilai yang disorot di atas.
sumber
Saya baru saja mengalami masalah ini. setelah seharian memeriksa akhirnya saya mendapat jawaban dengan bahwa file mysql.sock dibuat ketika MariaDB dimulai dan dihapus ketika MariaDB dimatikan. Itu tidak akan ada jika MariaDB tidak berjalan. mungkin Anda tidak menginstal MariaDB. ANDA BISA IKUTI INSTRUKSI DI BAWAH INI: https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST
sumber
Saya mengalami kesalahan soket ini dan pada dasarnya bermuara pada fakta bahwa MySQL tidak berjalan. Jika Anda menjalankan instalasi baru, pastikan Anda menginstal 1) paket sistem dan 2) installer panel (mysql.prefPane). Pemasang panel akan memungkinkan Anda untuk pergi ke System Preferences dan membuka MySQL, dan kemudian menjalankan instance.
Perhatikan bahwa, pada instalasi baru, saya perlu mengatur ulang komputer saya agar perubahan dapat diterapkan dengan benar. Setelah reboot, saya menjalankan instance baru dan dapat membuka koneksi ke localhost tanpa masalah.
Juga dari catatan, saya tampaknya telah menginstal versi MySQL sebelumnya tetapi telah menghapus panel, yang membuatnya mudah untuk mendapatkan instance dari MySQL yang berjalan untuk pengguna mac.
Tautan yang baik untuk proses instalasi ulang ini: http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/
sumber