一、Mysql数据库连接失败!
在windows中配置好Apache、php7.3.10以及MySQL8.0后,安装wordpress时遇到数据库连接时出错的问题。
在确认wp-config.php文件配置没有出错之后,寻找问题,首先验证php能否连接到mysql数据库,使用如下php程序;
<php
//返回连接mysql服务器的对象
$connect =mysqli_connect("localhost","root","1234","wp_database");
if (!$connect) {
//连接失败时,打印错误报告
die('连接失败: '. mysqli_error());
}
echo '连接成功!';
mysqli_close($link);
?>
用法:
$connect_obj=mysqli_connect(host,username,password,dbname,port,socket);
可选项:
| host | 主机名或 IP 地址 |
| username | MySQL 的用户名|
| password | 用户对应的MySQL 密码 |
| dbname | 要连接的数据库名称 |
| port | 要连接的mysql服务器的端口号 |
| socket | 所使用的socket |
运行测试php程序,结果如下:
服务器要求的身份验证方法对客户端未知。提示服务端(要连接的数据库)所要求的验证方式为caching_sha2_password。
打开phpinfo(),查看当前安装的php版本中的配置信息,找到mysqlnd
当前PHP版本中所带的mysqlnd无法支持这种验证(caching_sha2_password),而PHP默认的是mysql_native_password 。
注:也可以修改mysql服务器的身份验证方法:
1、在cmd中登录MySQL服务器
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
2、更新
flush privileges;
即可。
二、Mysql中的设置
MySQL中以root登录,并查看数据库所默认的身份验证:
mysql -u root -p
mysql中创建的用户保存在数据库"mysql"下的"user"表中。
select host,user,plugin from mysql.user where user ='root';
可以在MySQL中创建一个支持mysql_native_password验证的用户,并用该用户登录管理wp_database数据库。
创建一个认证方式是mysql_native_password的用户
create user 'wpts'@'localhost' identified with mysql_native_password by '1234';
创建要存放wordpress数据的数据库,指定字符集
create database wp_database default charset utf8 collate utf8_general_ci;
将wp_database的所有权限给用户wpts
grant all on wp_database.* to 'wpts'@'localhost';
此时就可以登录成功 了!
三、用到的mysql命令
在dos中启动mysql数据库时,需要在管理员窗口中启动,不然权限不够启动不了!
启动命令:net start mysql
此处要填数据库服务器的名称;
停止命令:net stop mysql
0、显示当前用户下所拥有的数据库 :
SHOW DATABASE;
1、创建数据库:CREATE DATABASE database_name;
2、创建用户:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%!密码可为空。
3、用户授权
GRANT privileges ON databasename.tablename TO 'username'@'host'
*
表示,如*.*
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
5、删除用户
DROP USER 'username'@'host';
6、删除数据库
DROP DATABASE databasename;
注意:在mysql8.0版本中,修改密码的方式与之前的版本不同!
Mysql8.0官方文档