Pangkalan data MySQL sering digunakan dalam pembangunan projek laman web PHP. Apabila membangunkan projek menggunakan rangka kerja PHP ThinkPHP, selalunya perlu untuk menyambung ke pangkalan data MySQL. Walau bagaimanapun, kadangkala kita mungkin menghadapi masalah tidak dapat menyambung ke pangkalan data MySQL, yang akan membawa masalah yang tidak perlu kepada pembangunan. Artikel ini akan memperkenalkan cara menyelesaikan masalah yang ThinkPHP tidak dapat menyambung ke pangkalan data MySQL.
Langkah pertama ialah menyemak fail konfigurasi
Apabila menyambung ke pangkalan data MySQL, anda perlu menetapkan parameter yang berkaitan dalam fail konfigurasi. ThinkPHP menggunakan fail config.php
, yang terletak dalam direktori Application/Common/Conf/
. Dalam fail ini, kita perlu menetapkan parameter berkaitan pangkalan data, seperti berikut:
return array( // 数据库配置 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => '127.0.0.1', // 服务器地址 'DB_NAME' => 'test', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' => '3306', // 端口 'DB_PREFIX' => '', // 数据库表前缀 );
di mana, DB_TYPE
mewakili jenis pangkalan data, berikut ialah mysql
. DB_HOST
mewakili alamat pelayan MySQL Jika dijalankan secara setempat, isikan 127.0.0.1
atau localhost
. DB_NAME
mewakili nama pangkalan data, yang perlu dibuat terlebih dahulu. DB_USER
ialah nama pengguna untuk menyambung ke pangkalan data MySQL, DB_PWD
ialah kata laluan nama pengguna, DB_PORT
ialah nombor port dan DB_PREFIX
ialah awalan jadual pangkalan data. Perlu diingatkan bahawa parameter ini perlu ditetapkan mengikut situasi sebenar anda.
Jika anda tidak boleh menyambung ke pangkalan data MySQL, anda perlu menyemak sama ada parameter ini ditetapkan dengan betul. Jika nama pengguna atau kata laluan salah, ia perlu diperbetulkan.
Langkah kedua ialah menyemak sama ada pelayan MySQL telah dimulakan
Sebelum menyambung ke pangkalan data, anda perlu memastikan pelayan MySQL telah dimulakan. Jika pelayan MySQL tidak dimulakan, sambungan tidak akan berjaya diwujudkan. Pada Linux atau Mac OS 🎜>Jika ia tidak dimulakan, anda perlu menggunakan arahan berikut untuk memulakan pelayan MySQL:
$ ps aux | grep mysqld
Arahan di atas memulakan pelayan MySQL dan perlu diubah mengikut sistem pengendalian yang anda gunakan.
root 14120 0.0 0.6 340248 11448 ? Ssl 08:21 0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
$ sudo systemctl start mysql
Sama ada pelayan MySQL membenarkan sambungan jauh ditetapkan melalui parameter
. Jika nilai parameterditetapkan kepada
, pelayan MySQL tidak membenarkan sambungan jauh jika ditetapkan kepada, pelayan MySQL membenarkan semua sambungan jauh. Anda boleh melihat tetapan parameter ini dalam fail konfigurasi MySQL. Di Ubuntu, fail ini terletak di
, dan pada CentOS atau RHEL, fail ini terletak di. Dalam fail ini, konfigurasi parameter bind-address
boleh ditemui. Parameter ini perlu ditetapkan kepada bind-address
untuk membenarkan sambungan jauh. 127.0.0.1
0.0.0.0
Jika anda telah menetapkan parameter /etc/mysql/mysql.conf.d/mysqld.cnf
kepada /etc/my.cnf
tetapi masih tidak dapat menyambung ke pelayan MySQL dari jauh, anda perlu menyemak sama ada pelayan anda berdinding api Jika tembok api tidak dikonfigurasikan dengan betul, ia boleh menyebabkan sambungan gagal. bind-address
0.0.0.0
Langkah 4, semak kebenaran pengguna MySQL
Dalam MySQL, kebenaran pengguna juga boleh menyebabkan masalah sambungan. Jika nama pengguna yang digunakan tidak mempunyai kebenaran untuk mengakses pangkalan data yang diperlukan, sambungan tidak akan berjaya diwujudkan. Dalam pelayan MySQL, anda boleh menggunakan arahan berikut untuk melihat kebenaran pengguna: bind-address
0.0.0.0
apabila menyambung ke pelayan MySQL secara setempat. Jika anda menyambung ke pelayan MySQL dari jauh, anda perlu menggantikan
dengan alamat IP atau nama hos yang anda gunakan. Jika kebenaran kepada pangkalan data yang diperlukan tiada daripada output, anda perlu memberikan kebenaran yang sepadan kepada pengguna:mysql> SHOW GRANTS FOR 'root'@'localhost';
pengguna semua kebenaran untuk mengakses pangkalan data root
, dan Kata laluan untuk pengguna ini ditetapkan kepada localhost
.
mysql> GRANT ALL PRIVILEGES ON dbname.* to 'username'@'localhost' IDENTIFIED BY 'password';
Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika thinkphp tidak dapat menyambung ke pangkalan data mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!