连接数据库失败:Access denied for user 'root'@'localhost' (using password: YES)

我写了一个PHP的登陆注册页在本地测试出现连接数据库失败:Accessdeniedforuser'root'@'localhost'(usingpassword:YES)... 我写了一个PHP的登陆注册页在本地测试出现
连接数据库失败:Access denied for user 'root'@'localhost' (using password: YES) 这是怎么回事在网上查都说密码问题 可我数据库密码没问题 这是
<?php
/*****************************
*数据库连接
*****************************/
$conn = @mysql_connect("localhost","root","root123");
if (!$conn){
die("连接数据库失败:" . mysql_error());
}
mysql_select_db("test", $conn);
//字符转换,读库
mysql_query("set character set 'gbk'");
//写库
mysql_query("set names 'gbk'");
?>

还有这个
<?php
session_start();

//检测是否登录,若没登录则转向登录界面
if(!isset($_SESSION['userid'])){
header("Location:login.html");
exit();
}

//包含数据库连接文件
include('conn.php');
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
$user_query = mysql_query("select * from user where uid=$userid limit 1");
$row = mysql_fetch_array($user_query);
echo '用户信息:<br />';
echo '用户ID:',$userid,'<br />';
echo '用户名:',$username,'<br />';
echo '邮箱:',$row['email'],'<br />';
echo '注册日期:',date("Y-m-d", $row['regdate']),'<br />';
echo '<a href="login.php?action=logout">注销</a> 登录<br />';
?>
展开
 我来答
匿名用户
2016-05-31
展开全部
几个可能:
1. 用户名、密码错误,所以无法访问
2. 数据库端设置了IP访问权限,不能用localhost访问。换成具体的IP地址试试。
3. 数据库端设置了相关操作权限,该用户没有create权限。

mysql -u root -p
mysql>use mysql;
mysql>select 'host' from user where user='root';
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;
mysql>select 'host' from user where user='root';
第一句是以权限用户root登录
第二句:选择mysql库
第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
第五句:刷新MySQL的系统权限相关表
第六句:再重新查看user表时,有修改。。
重起mysql服务即可完成。
战歌DW
高粉答主

2018-03-30 · 说的都是干货,快来关注
知道大有可为答主
回答量:179
采纳率:100%
帮助的人:2.2万
展开全部

1、检查环境正常

使用mysql -u root -p 可以进入MySQL操作界面

直接使用/usr/local/php5/bin/php /web/test.php执行可以连上数据库

2、打开hosts加入

复制代码代码如下:127.0.0.1 qttc

使用qttc当主机连接也正常,唯独就不认localhost。

3、localhost连接方式不同导致

为了了解PHP连接数据库时,主机填写localhost与其它的区别阅读了大量资料,最后得知:

当主机填写为localhost时mysql会采用 unix domain socket连接
当主机填写为127.0.0.1时mysql会采用tcp方式连接
这是linux套接字网络的特性,win平台不会有这个问题

4、解决方法

在my.cnf的[mysql]区段里添加

复制代码代码如下:

protocol=tcp

保存重启MySQL,问题解决!

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-10-10
展开全部
1. kill mysql进程

2.把下面这段保存在一个文件中,然后给任何人读写的权限。123456 是自己设的密码:

UPDATE mysql.user
SET authentication_string = PASSWORD('123456'), password_expired = 'N'
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

3.输入一下命令:yourfile是你的文件的完全路径
mysqld_safe --init-file=yourfie &

4.以后应该就可以 用root 的账号和密码登录了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逗逗水D
2018-12-21
知道答主
回答量:4
采纳率:0%
帮助的人:3270
展开全部
数据库没开远程连接,一般禁止远程访问,让你们运维开启即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
填空还是选择
2016-05-31 · TA获得超过944个赞
知道小有建树答主
回答量:520
采纳率:100%
帮助的人:390万
展开全部
  1. 可以使用具体ip访问mysql服务器   grant all privileges on *.* to   username@"%" identified by "password";

mysql -u  username -p passwowrd 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式