热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Php无法访问ubuntu服务器上的mysql服务器-Phpcannotaccessmysqlserveronubuntuserver

Ihavesetuptheubuntuserverandmyphpcodeisestablishingadatabaseconnectionwithmysqlrunn

I have setup the ubuntu server and my php code is establishing a database connection with mysql running on the same server. My credentials for the database are correct, crossed checked it thrice but i am unable to figure out what i a missing. So what i have done so far.

我已经设置了ubuntu服务器,我的php代码正在与在同一服务器上运行的mysql建立数据库连接。我的数据库凭据是正确的,交叉检查三次,但我无法弄清楚我错过了什么。那么到目前为止我做了什么。

Make sure the mysql server is running.

确保mysql服务器正在运行。

  1. mysql -u root -h 127.0.0.1 -p // I can login into mysql server on ubuntu server.
  2. mysql -u root -h 127.0.0.1 -p //我可以在ubuntu服务器上登录mysql服务器。

  3. Run this command 'netstat -tulpen' and get this entry tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 107 20280 -
  4. 运行此命令'netstat -tulpen'并获取此条目tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 107 20280 -

Error on apache when php is trying to access mysql:

php尝试访问mysql时apache出错:

PHP Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES)

PHP警告:mysqli :: __ construct():( HY000 / 1045):拒绝访问用户'root'@'localhost'(使用密码:YES)

Lastly my database credentials look like this:

最后,我的数据库凭据如下所示:

// here I have tried 127.0.0.1:3306, localhost as well but it does not seem to work
$dbhost2 = 'localhost:3306'; 
$dbuser2 = 'root';
$dbpass2 = 'somepassword';
$dbname2 = 'my_db_name';

Updated: This is how i am connecting my php code is using the above variables to connect to the database

更新:这是我如何连接我的PHP代码是使用上述变量连接到数据库

$DBCONN2 = @mysqli_connect($dbhost2, $dbuser2, $dbpass2, $dbname2) or die('Failed');

Updated 2: There is also another connection being used like this

更新2:还有另一个连接正在使用这样

$DBCOnNi= new mysqli($dbhost2, $dbuser2, $dbpass2, $dbname2) or die('Failed');

3 个解决方案

#1


-3  

mysql -u root -h 127.0.0.1 -p

mysql -u root -h 127.0.0.1 -p

...

$dbhost2 = 'localhost:3306';

$ dbhost2 ='localhost:3306';

In MySQL, 'localhost' is not a network address. 'localhost' is interpreted as meaning 'use the defined (AF_UNIX) filesystem socket, not a network socket'. In addition, the authentication for 'localhost' connections is handled separately from network connections.

在MySQL中,'localhost'不是网络地址。 'localhost'被解释为'使用已定义的(AF_UNIX)文件系统套接字,而不是网络套接字'。此外,“localhost”连接的身份验证与网络连接分开处理。

The path to the filesystem socket is defined in 'my.cnf'. The location of my.cnf is defined when the relevant servers and clients are compiled, but is usually '/etc'

文件系统套接字的路径在'my.cnf'中定义。 my.cnf的位置是在编译相关服务器和客户端时定义的,但通常是'/ etc'

While I've not tried explicitly with mysqlnd, I would expect its behaviour to be consistent with clients using libmysql.

虽然我没有明确尝试使用mysqlnd,但我希望它的行为与使用libmysql的客户端保持一致。

Change your PHP code to use '127.0.0.1' (specifying the default port number 3306 should be redundant)

将您的PHP代码更改为使用'127.0.0.1'(指定默认端口号3306应该是多余的)

#2


-3  

Try without password or try to add password to mysql root user. ANd see here Warning: mysqli_connect(): (HY000/1045): Access denied for user 'username'@'localhost' (using password: YES)

尝试不使用密码或尝试向mysql root用户添加密码。请看这里警告:mysqli_connect():( HY000 / 1045):用户'用户名'@'localhost'拒绝访问(使用密码:YES)

#3


-3  

Try with PDO https://github.com/fxstar/PhpJsCss/blob/master/PDOapi/_PDO_Class.php

尝试使用PDO https://github.com/fxstar/PhpJsCss/blob/master/PDOapi/_PDO_Class.php

    // Mysql connect    
function Conn(){
    try{
        // data from config file globals variables
        global $mysqlhost, $mysqluser, $mysqlpass, $mysqlport, $mysqldb;
        // pdo
        $cOnn= new PDO('mysql:host='.$mysqlhost.';port='.$mysqlport.';dbname='.$mysqldb.';charset=utf8', $mysqluser, $mysqlpass);
        // don't cache query
        $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        // show warning text
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
        // throw error exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // don't colose connecion on script end
        $conn->setAttribute(PDO::ATTR_PERSISTENT, false);
        // set utf for connection utf8_general_ci or utf8_unicode_ci 
        $conn->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'");
        // Buffered query
        // $conn->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true);

        // PDO SSL
        // $cOnn= new PDO('mysql:host='.$mysqlhost.';port='.$mysqlport.';dbname='.$mysqldb.';charset=utf8', $mysqluser, $mysqlpass,array( PDO::MYSQL_ATTR_SSL_KEY    =>'/path/to/client-key.pem', PDO::MYSQL_ATTR_SSL_CERT=>'/path/to/client-cert.pem', PDO::MYSQL_ATTR_SSL_CA    =>'/path/to/ca-cert.pem'));
        // Or
        // $conn->setAttribute(PDO::MYSQL_ATTR_SSL_KEY => '/path/to/client-key.pem');
        // $conn->setAttribute(PDO::MYSQL_ATTR_SSL_CERT => '/path/to/client-cert.pem');
        // $conn->setAttribute(PDO::MYSQL_ATTR_SSL_CA => '/path/to/ca-cert.pem');           
        return $conn;
    }catch(Exception $e){
        echo "Mysql connection error!!!";
        return 0;
    }
    // $rows = $res->fetchAll(PDO::FETCH_ASSOC);
    // $cnt = $res->rowCount();
    // $id = $this->db->lastInsertId();
    // buffered query
    // $stmt = $db->prepare('select * from foo', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)
}

推荐阅读
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
author-avatar
天宣建欣振萍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有