Saturday 5 May 2012

Kesalahan umum Ketika Menggunakan Program MySQL



Bagian ini berisi daftar beberapa kesalahan yang pengguna sering menemukan ketika menjalankan program MySQL. Meskipun masalah muncul ketika Anda mencoba untuk menjalankan program klien, solusi untuk banyak masalah yang melibatkan mengubah konfigurasi dari server MySQL.

Akses ditolak

Akses Sebuah ditolak kesalahan dapat memiliki banyak penyebab. Sering masalah ini terkait dengan account MySQL server yang memungkinkan program klien untuk menggunakan saat menghubungkan. Lihat Bagian 4.4.8, "Penyebab Kesalahan Akses ditolak." Lihat Bagian 4.4.2, "Bagaimana Sistem Privilege Works."

 Tidak dapat tersambung ke [lokal] MySQL server

Seorang klien MySQL di Unix dapat terhubung ke server mysqld dengan dua cara: Dengan menggunakan file socket Unix untuk menghubungkan melalui file di filesystem (default / tmp / mysql.sock), atau dengan menggunakan TCP / IP, yang menghubungkan melalui nomor port. Sebuah socket Unix koneksi file lebih cepat daripada TCP / IP, tetapi hanya dapat digunakan saat terhubung ke server pada komputer yang sama. Sebuah file soket Unix digunakan jika Anda tidak menentukan nama host atau jika Anda menentukan nama host localhost khusus.
Jika server MySQL berjalan pada Windows 9x atau Me, Anda dapat menghubungkan hanya melalui TCP / IP. Jika server berjalan pada Windows NT, 2000 atau XP dan dimulai dengan opsi - enable-bernama-pipe, Anda juga dapat terhubung dengan pipa bernama jika Anda menjalankan klien pada host dimana server berjalan. Nama dari pipa bernama adalah MySQL secara default. Jika Anda tidak memberikan nama host saat menghubungkan ke mysqld, klien pertama MySQL akan mencoba untuk terhubung ke pipa bernama. Jika itu tidak berhasil, ia akan koneksi ke port TCP / IP. Anda dapat memaksa penggunaan pipa bernama pada Windows dengan menggunakan. Sebagai nama host.
Kesalahan (2002) Tidak dapat terhubung ke ... biasanya berarti bahwa tidak ada server MySQL berjalan pada sistem atau bahwa Anda menggunakan nama file Unix soket yang salah atau TCP / IP nomor port ketika mencoba untuk terhubung ke server.
Mulailah dengan memeriksa apakah ada proses bernama mysqld berjalan pada host server Anda. (Gunakan ps di Unix atau Task Manager pada Windows.) Jika tidak ada proses seperti itu, Anda harus mulai server. Lihat Bagian 2.4.4, "Memulai dan Pemecahan Masalah Server MySQL."
Jika proses mysqld berjalan, Anda dapat memeriksa dengan mencoba perintah berikut. Nomor port atau nama file Unix soket mungkin berbeda di setup Anda. Host_ip mewakili nomor IP dari mesin dimana server berjalan.
  shell> mysqladmin versi
 shell> mysqladmin variabel
 shell> mysqladmin-h 'hostname' versi variabel
 shell> mysqladmin-h 'hostname' - port = 3306 versi
 shell> mysqladmin-h host_ip versi
 shell> mysqladmin - protokol = socket - socket = / tmp / mysql.sock versi 
Perhatikan penggunaan tanda kutip mundur bukan maju dengan kutipan perintah hostname, ini menyebabkan output dari hostname (yaitu, nama host saat ini) yang akan diganti ke perintah mysqladmin. Jika Anda tidak memiliki perintah hostname atau berjalan pada Windows, Anda dapat secara manual ketik nama host dari mesin anda (tanpa tanda kutip mundur) setelah jam-pilihan. Anda juga dapat mencoba-h 127.0.0.1 untuk terhubung dengan TCP / IP ke host lokal.
Berikut adalah beberapa alasan tidak dapat tersambung ke server MySQL lokal kesalahan mungkin terjadi:
mysqld tidak berjalan.
 
Anda menjalankan pada sistem yang menggunakan MIT-pthreads. Jika Anda menjalankan pada sistem yang tidak memiliki benang asli, mysqld menggunakan paket MIT-pthreads. Lihat Bagian 2.1.1, "Sistem Operasi yang didukung oleh MySQL." Namun, tidak semua MIT-pthreads versi mendukung file soket Unix. Pada sistem tanpa dukungan socket file, Anda harus selalu menentukan nama host secara eksplisit saat menghubungkan ke server. Coba gunakan perintah ini untuk memeriksa koneksi ke server:
  shell> mysqladmin-h 'hostname' versi 
Seseorang telah menghilangkan file socket Unix yang menggunakan mysqld (/ tmp / mysql.sock secara default). Sebagai contoh, Anda mungkin memiliki tugas cron yang menghilangkan file lama dari direktori / tmp. Anda selalu dapat menjalankan versi mysqladmin untuk memeriksa apakah soket Unix file yang mysqladmin sedang mencoba untuk menggunakan benar-benar ada. Perbaikan dalam hal ini adalah untuk mengubah tugas cron untuk tidak menghapus mysql.sock atau untuk menempatkan file socket tempat lain. Lihat Bagian A.4.5, "Bagaimana Melindungi atau Ubah File MySQL Socket / tmp / mysql.sock."
 
Anda telah memulai server mysqld dengan - socket = / path / ke / soket pilihan, tapi lupa untuk memberitahu program klien nama baru dari file socket. Jika Anda mengubah nama path socket untuk server, Anda juga harus memberitahu klien MySQL. Anda dapat melakukannya dengan menyediakan sama - pilihan soket ketika Anda menjalankan program klien. Lihat Bagian A.4.5, "Bagaimana Melindungi atau Ubah File MySQL Socket / tmp / mysql.sock."
 
Anda menggunakan Linux dan satu thread server telah meninggal (inti dibuang). Dalam hal ini, Anda harus membunuh benang mysqld lainnya (misalnya, dengan membunuh atau dengan script mysql_zap) sebelum Anda dapat me-restart server MySQL. Lihat Bagian A.4.2, "Apa yang Harus Dilakukan Jika MySQL Menjaga Crashing."

Server atau program klien mungkin tidak memiliki hak akses yang tepat untuk direktori yang menyimpan file socket Unix atau file socket sendiri. Dalam hal ini, Anda harus mengubah hak akses untuk file direktori atau soket sehingga server dan klien dapat mengaksesnya, atau me-restart mysqld dengan opsi - soket yang menentukan nama file soket di direktori dimana server dapat menciptakannya dan di mana program client dapat mengaksesnya.
 
Jika Anda mendapatkan pesan kesalahan Tidak dapat terhubung ke MySQL server pada some_host, Anda dapat mencoba hal-hal berikut untuk mengetahui apa masalahnya:
 
Periksa apakah server berjalan pada host yang dengan menjalankan telnet some_host 3306 dan menekan Enter beberapa kali. (3306 adalah default MySQL nomor port Ubah value jika server Anda mendengarkan port yang berbeda..) Jika ada server MySQL berjalan dan mendengarkan port, Anda harus mendapatkan respon yang mencakup nomor versi server. Jika Anda mendapatkan error seperti telnet: Tidak dapat terhubung ke host remote: Koneksi ditolak, maka tidak ada server yang berjalan pada port tertentu.
 
Jika server berjalan pada host lokal, coba gunakan mysqladmin-h localhost variabel untuk menghubungkan menggunakan file socket Unix. Memverifikasi nomor TCP / IP port server dikonfigurasi untuk mendengarkan (itu adalah nilai dari variabel port.)


Pastikan bahwa server mysqld Anda tidak mulai dengan opsi - skip-networking. Jika itu, Anda tidak akan dapat terhubung ke menggunakan TCP / IP.

No comments:

Post a Comment