PHP和MySQLi错误-用户'root'@'localhost'的访问被拒绝(使用密码:否)[重复]
Posted
技术标签:
【中文标题】PHP和MySQLi错误-用户\'root\'@\'localhost\'的访问被拒绝(使用密码:否)[重复]【英文标题】:PHP and MySQLi error-Access denied for user 'root'@'localhost' (using password: NO) [duplicate]PHP和MySQLi错误-用户'root'@'localhost'的访问被拒绝(使用密码:否)[重复] 【发布时间】:2019-02-21 19:08:07 【问题描述】:我定义:
$hostname= "localhost";
$database = "company";
$username = "dxy";
$password= "abc";
$c = mysqli_connect($hostname, $username, $password);
我得到以下错误:
错误 2:用户 'root'@'localhost' 的访问被拒绝(使用密码:否)
为什么它尝试通过root@localhost
而不是dxy@localhost
连接?
我在这台专用服务器上有另一个应用程序。但它通过username@localhost
连接而不是root
....这有什么问题?
当我将mysqli
更改为mysql
时,它会完美连接。
感谢您的帮助。
【问题讨论】:
我看不到此代码生成该错误消息。你确定它不是来自代码中的其他地方,或者你的变量没有被覆盖? 注意:mysqli
的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query
接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)
和 $db->prepare("…")
过程化接口是 php 4 时代引入 mysqli
API 时的产物,不应在新代码中使用。
我添加了第四个参数,没有运气。当我将 mysqli 更改为 mysql 时,一切正常。不,这是连接错误。我正在使用 Plesk 来管理我的服务器,所以不确定它是否与此有关
我将在不久的将来迁移到 mysqli API...我的应用程序很重,有超过 200 个动态页面...
没有足够的代码来支持这个问题。我有一种感觉,你没有向我们展示/告诉我们一切。我认为您仍在使用一些旧的 mysql_* 函数,并且可能没有一个数据库连接。我几乎 100% 确定您正在混合使用不同的 mysql api。
【参考方案1】:
首先,您在连接中遗漏了数据库,因此它不知道在哪里连接。其次创建一个新的 mysqli() 函数来定义一个数据库连接。 希望这会有所帮助。
$hostname = 'localhost';
$username = 'dxy';
$password = 'abc';
$database = 'company';
$c = new mysqli($hostname, $username, $password, $database);
【讨论】:
仅连接时不需要数据库参数。但是,在查询表时需要它。我有一种感觉,这比他们让我们知道的更进一步/更深入。 正如你们中的一个人所怀疑的那样,应用程序本身的问题不是 db conn。实际错误是:错误:2 mysql_real_escape_string(): Access denied for user 'root'@'localhost' (using password: NO)..so I changed mysql_real_escape_string() to mysqli_real_escape_string() && added first conn parameters.. .现在一切都很好。吸取教训不要同时使用混合 MySQL 新旧 MySQLi...以上是关于PHP和MySQLi错误-用户'root'@'localhost'的访问被拒绝(使用密码:否)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
PHP和MySQLi错误 - 访问被拒绝用户'root'@'localhost'(使用密码:NO)[复制]
PHP登录页面因root用户错误而拒绝访问,并期望参数1为mysqli,bool给定[重复]
kali配置phpmyadmin报错mysqli::__construct(): (HY000/1698): Access denied for user 'root'@'lo
Zabbix的安装与部署---问题处理(php65.6.28 mysqli 报错误 处理)