Home >Database >Mysql Tutorial >How to solve the problem that thinkphp cannot connect to the mysql database

How to solve the problem that thinkphp cannot connect to the mysql database

WBOY
WBOYforward
2023-05-30 09:28:521402browse

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!

Statement:
This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete