Saya menulis beberapa fungsi yang digunakan oleh php halaman web, dalam rangka untuk berinteraksi dengan database mysql. Ketika saya menguji mereka pada server saya, saya mendapatkan error ini:
"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)"
Saya bisa menggunakannya di pc saya (menggunakan XAMPP) dan saya dapat menavigasi melalui tabel dari database dengan menggunakan command line di server. Namun, halaman web gagal untuk menghubungkan. I'telah memeriksa password tetapi dengan tidak ada hasil. It's benar (kalau tidak saya tidak bisa log in ke mysql dari command line).
Panggilan dari fungsi ini adalah sebagai berikut:
$conn = new mysqli("localhost", "root", "password", "shop");
Apakah saya harus membuat sesuatu di server saya? Terima kasih
Edit: PHP versi 5.3.3-7+squeeze1 mysql versi: 5.1.49-3 baik pada debian
Aku diselesaikan dengan cara ini: Saya login dengan username root
mysql -u root -p -h localhost
Saya membuat user baru dengan
CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';
kemudian saya membuat database
CREATE DATABASE shop;
Saya diberikan hak istimewa untuk pengguna baru untuk database ini
GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';
Kemudian saya log out root dan login user baru
quit;
mysql -u francesco -p -h localhost
Saya membangun kembali database saya menggunakan script
source shop.sql;
Dan yang's itu.. Sekarang dari php bekerja tanpa masalah dengan panggilan
$conn = new mysqli("localhost", "francesco", "some_pass", "shop");
Terima kasih untuk semua waktu anda :)
Apakah ada akun pengguna masuk di DB untuk root@localhost? Di MySQL anda dapat mengatur berbagai akun user permissions oleh tuan rumah. Mungkin ada beberapa akun yang berbeda dengan nama yang sama dikombinasikan dengan tuan rumah mereka menghubungkan dari. Yang paling umum adalah [email protected] dan root@localhost. Ini dapat memiliki password yang berbeda dan izin. Pastikan root@localhost ada dan memiliki pengaturan yang anda harapkan.
Saya bersedia untuk bertaruh, berdasarkan penjelasan anda, bahwa ini adalah masalah. Menghubungkan dari PC lain menggunakan akun yang berbeda dari root@localhost dan baris perintah saya pikir menghubungkan menggunakan [email protected].
Dari apa yang anda've mengatakan sejauh ini, sepertinya masalah di mana MySQL driver di PHP5.3 memiliki kesulitan menghubungkan ke yang lebih tua MySQL versi 4.1. Lihat di http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx
Ada's pertanyaan serupa di sini dengan beberapa jawaban yang berguna, https://stackoverflow.com/questions/1575807/cannot-connect-to-mysql-4-1-using-old-authentication
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
Ini akan kembali 16 untuk akun dengan password lama dan 41 untuk akun dengan password baru (dan 0 untuk akun tanpa password sama sekali, anda mungkin ingin mengurus mereka juga). Baik menggunakan user management tools MySQL front end (jika ada) atau
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges
Kemungkinan besar hal ini tidak mengidentifikasi pengguna anda dengan benar. root@localhost. Pilih versi Mysql anda MAMP menggunakan.
/Aplikasi/MAMP/Perpustakaan/bin/mysqldump -uroot -p db_name > test_db_dump.sql
Aku benar-benar menulis alias di komputer saya sehingga saya don't harus ingat bagaimana untuk sampai ke direktori bin.
alias mysqldumpMAMP='/Aplikasi/MAMP/Perpustakaan/bin/mysqldump'
Yang memungkinkan saya untuk menjalankan ini:
mysqldumpMAMP -uroot -p db_name > test_db_dump.sql
Anda dapat menyimpan alias di bash profil ~/.bash_profile
atau ~/.bash_rc
TIP:
komentar pid dan soket file, jika anda dapat't terhubung ke server..
mysql dapat menghubungkan dengan salah pid dan/atau soket file,
jadi, ketika anda mencoba untuk terhubung ke server melalui command-line itu ,"penampilan"
di salah pid/socket file...
### komentar pid dan soket file, jika anda dapat't terhubung ke server..
#pid-file=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.kaus kaki