wordpress安装时连接不上MySQL8.0(已解决)Windows

一、Mysql数据库连接失败!

在windows中配置好Apache、php7.3.10以及MySQL8.0后,安装wordpress时遇到数据库连接时出错的问题。
wordpress安装时连接不上MySQL8.0(已解决)Windows_第1张图片
在确认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';

wordpress安装时连接不上MySQL8.0(已解决)Windows_第2张图片可以在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';

此时就可以登录成功 了!
wordpress安装时连接不上MySQL8.0(已解决)Windows_第3张图片
三、用到的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'
  1. privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
  2. databasename:数据库名
  3. tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
    4、撤销用户权限(同上)
REVOKE privilege ON databasename.tablename FROM 'username'@'host';

5、删除用户

DROP USER 'username'@'host';

6、删除数据库

DROP DATABASE  databasename;

注意:在mysql8.0版本中,修改密码的方式与之前的版本不同!

Mysql8.0官方文档

你可能感兴趣的:(MySQL,PHP)