php无法连接到mysql
关于本文更详细的内容,欢迎关注我的个人网站《程序员网》
- 背景
- 正文
- 1上面这段代码是可以运行的
- 2但是当我通过web浏览器访问这个脚本的时候却没有出现我想要的结果代码死在了 mysql 连接那里
- 3注释完之后还有一个问题需要注意
背景:
使用lighttpd作为web服务器,php作为服务器脚本,mysql作为数据库。当浏览器客户端访问的时候,服务器php脚本会尝试连接mysql,查询数据并且返回给客户端。但是在调试的过程中发生两次,无法连接mysql的情况。这里作一下记录。
正文:
在php脚本中连接mysql比较简单,先贴一下代码
<span style="font-size:14px;"><?php
$servername = "192.168.110.2";
$port=3306;
$username = "username";
$password = "password";
$dbname = "testDB";
$socket="mysqli.default_socket";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname,$port,$socket);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
(1)上面这段代码是可以运行的
如果在命令行界面中采用”php +脚本名称”这样的方式运行,代码是可以顺利打印出 mysql 中某个table的数据。
(2)但是当我通过web浏览器访问这个脚本的时候,却没有出现我想要的结果,代码死在了 mysql 连接那里。
后来分析了一下原因,应该是mysql配置参数的问题。
<span style="font-size:14px;">$server="192.168.110.2";</span>
这里采用的是远程连接mysql的方式,但是默认mysql安装的时候,只监听127.0.0 .1(也就是本机的IP)。
所以如果要让mysql可以远程访问,需要配置mysql监听的IP。
打开mysql的配置文件 /etc/mysql/my.cnf,把下面这行注释掉。
bind-address = 127.0.0.1
(3)注释完之后,还有一个问题需要注意
就是如果使用root用户去远程访问mysql的时候,会弹出发生权限问题(在mysql本机调试的时候不会出现,但是远程连接的时候会出现)。
解决办法:创建一个普通用户,并且为这个用户添加修改或者查询mysql的权限,然后使用这个普通用户去访问mysql。
关于本文更详细的内容,欢迎关注我的个人网站《程序员网》
IT从业人员需要及时关注技术动态,但是互联网的内容过于离散,好东西往往隐藏得很深。现在可以在微信公众号里面搜索关注“老鱼的IT技术分享”,订阅每天汇总的IT技术信息。欢迎大家关注!
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了