The first step is to check the configuration file
When connecting to the MySQL database, you need to set relevant parameters in the configuration file. ThinkPHP uses the config.php
file, which is in the Application/Common/Conf/
directory. In this file, we need to set database-related parameters as follows:
return array( // 数据库配置 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => '127.0.0.1', // 服务器地址 'DB_NAME' => 'test', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => '', // 密码 'DB_PORT' => '3306', // 端口 'DB_PREFIX' => '', // 数据库表前缀 );
Among them, DB_TYPE
represents the database type, here is mysql
. DB_HOST
represents the address of the MySQL server. If running locally, fill in 127.0.0.1
or localhost
. DB_NAME
represents the database name, which needs to be created in advance. DB_USER
is the username to connect to the MySQL database, DB_PWD
is the password of the username, DB_PORT
is the port number, DB_PREFIX
is the database table prefix. It should be noted that these parameters need to be set according to your actual situation.
If you cannot connect to the MySQL database, you need to confirm whether these parameters are set correctly. If the username or password is wrong, it needs to be corrected.
Second step, check whether the MySQL server has been started
Before connecting to the database, you need to ensure that the MySQL server has been started. If the MySQL server is not started, the connection will not be established successfully. To check whether the MySQL server has started, type the following command, for Linux or Mac OS X systems:
$ ps aux | grep mysqld
If the MySQL server has started, the following message will be displayed:
root 14120 0.0 0.6 340248 11448 ? Ssl 08:21 0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
If If it is not started, you need to use the following command to start the MySQL server:
$ sudo systemctl start mysql
The above command starts the MySQL server and needs to be changed according to the operating system you are using.
The third step is to check whether the MySQL server allows remote connections
If you want to connect to the MySQL server locally, you can ignore this step. However, if your MySQL server is not on the same machine as the web server, you need to check whether the MySQL server allows remote connections. The connection will not be successfully established if the MySQL server prohibits remote connections.
Whether the MySQL server allows remote connections is set through the bind-address
parameter. If the bind-address
parameter value is set to 127.0.0.1
, the MySQL server does not allow remote connections; if it is set to 0.0.0.0
, the MySQL server allows all remote connection. You can view the setting of this parameter in the MySQL configuration file. On Ubuntu, this file is located at /etc/mysql/mysql.conf.d/mysqld.cnf
, and on CentOS or RHEL, this file is located at /etc/my.cnf
. In this file, the configuration of the bind-address
parameters can be found. This parameter needs to be set to 0.0.0.0
to allow remote connections.
If you have set the bind-address
parameter to 0.0.0.0
, but still cannot connect to the MySQL server remotely, you need to check whether your server is firewalled. If If the firewall is not configured correctly, it may cause the connection to fail.
The fourth step, check MySQL user permissions
In MySQL, user permissions may also cause connection problems. If the username does not have permission to access the required database, the connection cannot be successfully established. In the MySQL server, you can use the following command to view user permissions:
mysql> SHOW GRANTS FOR 'root'@'localhost';
The above command checks the permissions of the root
user when connecting to the MySQL server locally. If you are connecting to a MySQL server remotely, you will need to replace localhost
with the IP address or hostname you are using. If permissions to the required database are missing from the output, you need to grant the corresponding permissions to the user:
mysql> GRANT ALL PRIVILEGES ON dbname.* to 'username'@'localhost' IDENTIFIED BY 'password';
The above command grants access to the username
user dbname
All permissions of the database and set the user's password to password
.
The above is the detailed content of How to solve the problem that thinkphp cannot connect to the mysql database. For more information, please follow other related articles on the PHP Chinese website!