用户名:  密码:   
您当前的位置:首页 > SQL数据库 >  MySql > 

开启WAMP3.35中的mysql8.3的远程访问功能

上次修改时间: 2024-04-24 14:12:57      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\SQL数据库相关\mysql相关\      下一页

开启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'] = '';