

开启WAMP3.35中的mysql8.3的远程访问功能
mysql默认只能用localhost或127.0.0.1本地连接,
****注:不能使用wamp2.5的PHP(PHP5.5)去连接wamp3.35(PHP8.2)的mysql,即不能使用低版本的PHP去连接高版本的数据库,否则提示如下错误:
Warning: mysqli::mysqli(): Server sent charset (255) unknown to the client. Please, report to the developers //客户端发来的字符集未知,请报告开发者
1. 点击右击绿色WAMP图标--mysql--Mysql Console打开mysql的命令行控制台,输入密码登录,默认密码为空
来自:https://www.cnblogs.com/renzhituteng/p/16425880.html
2. 分别执行如下命令,***//注意每名命令后要加分号
*****注:mysql控制执行的每条命令后必须加分号,
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; //这里是给root用户的本机访问设置密码为root
update user set host = '%' where user = 'root'; //设置root用户可以从所有主机访问,%表所有主机
FLUSH PRIVILEGES; //刷新权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; //给root用户添加可从任意主机访问所有表的最大权限,*.*表所有数据下所有表,%表所有主机
注:也可限制一个用户只能从指定IP访问,如:GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.104' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
flush privileges;
quit; //最后退出
3. 查看配置,要确保用户认证插件为mysql_native_password,因为mysql8.3默认使用插件caching_sha2_password可能存在兼容性问题
select host,user,plugin from user; //查看用户配置情况
ALTER USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'boot'; //将boot用户的认证插件改为mysql_native_password,boot为密码
注:创建用户时也可指定认证插件:CREATE USER 'bb'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'boot';
select host,user,plugin from user; //,查看结果,mysql8.3没有password
注:开启后要高版本的php去连接高版本的mysql,否则提示字符集未知
3.1 也可以不改root用户,而是新建一个用户授于其对指定数据库的访问权限
CREATE USER 'bb'@'%' IDENTIFIED BY 'boot'; //bb为用户名,%表该用户可以从所有主机访问,boot为密码,%改为localhost表该用户只能从本机访问
GRANT ALL PRIVILEGES ON ctcms.* TO 'bb'@'%'; //表赋给bb用户用ctcms数据库下所有表从所有主机都可访问
flush PRIVILEGES; //刷新权限,使配置生效
ALTER USER 'bb'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'boot'; //改这个认证插件可能会有更好的兼容性
4. 然后重启服务,注意在这之前不可以重启。然后就可以用IP地址及root root登录了
这样在php代码中就可以用mysql所在电脑的IP登录了,如:
<?php
$dbhost = '192.168.13.77'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = 'root'; // mysql用户名密码
$dbname = "ctcms"; //数据库名
// 创建连接
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
//Check connection
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
//die("连接失败: " . iconv('gbk','utf-8', $conn->connect_error));
}else{echo "连接成功!!!!";}
mysqli_query($conn , "set names utf8");
?>
。。。。。以下在wamp3.35中未测试
4. 这样修改后需要再修改phpmyadmin的配置文件,改为新设置的密码才能登录,
修改"C:\WAMP\apps\phpmyadmin4.1.14\config.inc.php"文件,将$cfg['Servers'][$i]['password'] = '';加上新的密码改为$cfg['Servers'][$i]['password'] = 'root';
如果phpmyadmin也需要远程登录,还需要进行如下操作
一,修改\wamp\bin\apache\apache2.4.9\conf\httpd.conf
AllowOverride none
#Require all denied
Allow from all
将Require all denied修改为Allow from all
AllowOverride all
#Require local
Allow from all
将Require local修改为Allow from all
二,修改\wamp\alias\phpmyadmin.conf
Require local
Order Deny,Allow
Deny from all
Allow from localhost ::1 127.0.0.1
修改为
Allow from all
Order Deny,Allow
Allow from all
三,修改\wamp\apps\phpmyadmin4.1.14\config.inc.php
将
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
修改为
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
注释掉
//$cfg['Servers'][$i]['user'] = 'root';
//$cfg['Servers'][$i]['password'] = '';