我通过实例从一本书上的PHP / MySQL的开发工作。 我工作在Linux / Apache的环境。
我已经建立了一个数据库和用户。 我试图与这行代码连接:
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
我得到这个错误:
警告:mysql_connect()函数[function.mysql-连接]:访问被拒绝的用户 'WWW的数据' @ '本地主机'(使用密码:是)在/var/www/hosts/dj/connect.php 3无法线连接到数据库:拒绝访问用户“www数据” @“localhost”的(使用密码:YES)
我只能猜测这里发生了什么:我觉得WWW的数据是Apache用户名。 当数据库连接,在到MySQL正在传递的凭据不是我的那些数据库用户,而是Apache自己的凭据。 是这里发生了什么?
如何在我为我的用户定义的凭据传递?
编辑:顺便说一句 - 我必须在变量$ db_hostname,$ db_username,$ DB_PASSWORD凭据。
它们通过使用require_once另一个文件传递英寸 如果无法找到该文件,然后我得到一个错误。 所以,我知道我的用户名和密码正在使用我的脚本。
我的两个脚本可以在这里看到: http://pastebin.com/MUneLEib
#
解决了:
多谢你们。
一对夫妇的你指出我已经编码carelessy。
另外,我是通过新的回答特别高兴:他告诉我,为什么正在使用的Apache进程的所有者的用户名进行。
:)
Answer 1:
我只是看着你的代码! 与用户名的变量是$ database_username,但使用的是$ db_username ..更改您的代码:
$db_server = mysql_connect($db_hostname, $database_username, $db_password);
或者你可以改变线与用户名:$ db_username =“[您的MySQL用户]”; //或用户名创建
当你不通过任何这将是用户MySQL假设,但因此,如果您还没有定义$ DB_PASSWORD它会说,它不会得到密码:(使用密码:NO)
你设置$ database_username与你的用户,但你是路过,没有设置$ db_username所以用户是没事的时候用的密码MySQL用户通过Linux的用户名默认! 由于没有与该密码或特权,甚至与该名则不能进行访问没有mysql用户!
该用户WWW的数据,是你猜对分配给客户端请求的apache用户!
Answer 2:
在您的login.php
使用变量$database_username
,但在你的连接功能,您使用$db_username
。 他们尝试了匹配。
Answer 3:
用户名进入$db_username
和密码进入$db_password
。
Answer 4:
所有这些其他的答案是如此放肆,因为如果你不知道$ db_username意味着数据库的用户名和相同的密码。
错误说您指定的用户名和密码。 您刚才指定的错误的。 你需要使用MySQL的用户名和密码,而不是系统的用户名/密码组合,所以,不,这不会是www数据。 这可能是根,有些密码,但同样,这些凭据MySQL内指定,而不是(必然)一样的系统用户名和密码。
MySQL安装应该有一个默认密码(你应该尽快修改)root用户。 有几种选择:你可以通过MySQL命令行添加用户或使用像一个接口的cPanel或Webmin的 ,如果您的提供商有这样的事情; 我用这两个,他们都可以很方便的接口添加新的MySQL用户并为其分配权限。
还只是一个提示:我通常会创建每个数据库都有一个用户,并给用户对数据库的完全权限,然后使用该用户使用连接到数据库的应用程序。
然后,当然,一旦你创建MySQL用户账户,并给它的权限在你的web应用程序的数据库,在用户名和密码进入你的脚本填写。
Answer 5:
<?php
$dbhost = 'localhost';
$dbuser = 'username';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
?>
Answer 6:
请确保你实际上你的数据库的登录用户名和密码分配给这些变量在尝试连接之前。 例如,使用的mysql_connect前行():
$db_username = 'myuser';
$db_password = 'mypass123';
Answer 7:
我建议你去通过关于MySQL和PHP教程试图去任何进一步的前 - 只是让你了解它是如何工作。
试试这个: http://www.tizag.com/mysqlTutorial/mysqlconnection.php
此外,文档是你的朋友: http://php.net/manual/en/function.mysql-connect.php
Answer 8:
给出的错误可能意味着特权没有被授予,或者密码不正确。 检查用户创建并授予访问权限,或者只是发出此,以确保它设置为允许MySQL服务器的访问。
$ mysql -u root -p
password:
(等等等等从服务器等等)
GRANT ALL PRIVILEGES ON db_base.* TO 'db username'@'localhost' IDENTIFIED BY 'some password';
如果所有的权限太大,可以考虑只给所需的基本权限:
GRANT SELECT,UPDATE,DELETE ON db_base.* TO 'db username'@'localhost' IDENTIFIED BY 'some password';
顺便说一句,服务器响应成功这种说法是查询确定,受影响的0行 。
Answer 9:
您的代码是正确的,它是说你的密码不正确,那么你的mysql数据库被拒绝MySQL连接。 如果您使用的XAMPP使用:
本地主机
如主机名和
根
作为用户名和在XAMPP没有密码,所以这将是
$password = "";
然后$dblink = new mysqli($hostname, $dbuser, $password, $dbname);
所以你可以设置你的瓦尔这样
<?php
$hostname = "localhost";
$dbuser = "root";
$password = ""; // means there is no password to the database
$dbname = "test"
?>
结论:
如果你得到这个作为你的消息 -
警告:mysql_connect()函数[function.mysql-连接]:访问被拒绝的用户 'WWW的数据' @ '本地主机'(使用密码:是)在/var/www/hosts/dj/connect.php 3无法线连接到数据库:拒绝访问用户“www数据” @“localhost”的(使用密码:YES)
这意味着你输入的密码是错误的或没有密码。
Answer 10:
停止使用mysql_connect()
!
你不应该使用这种或其他有关的相关功能这个扩展。
它的贬值,在PHP 7.0.0及以后删除。 一个替代方案是使用PDO或库MySQLi 。 下面是用于连接到MySQL使用PDO一个示例脚本:
<?php
/* Connect to a MySQL database using driver invocation */
/* DSN options:
http://php.net/manual/en/ref.pdo-mysql.connection.php
Error handling options:
http://php.net/manual/en/pdo.error-handling.php
Learn how to secure against SQL injection attacks:
http://php.net/manual/en/pdo.prepared-statements.php
*/
$user = 'myusername';
$pass = 'mypassword';
$host = 'localhost';
$mydb = 'mydatabase';
$dsn = "mysql:dbname=$mydb;host=$host";
try {
$dbh = new PDO($dsn, $user, $pass);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
文章来源: How do I connect to mysql from php?