gc5*_*gc5 57 php mysql access-denied
我写了一些php网页使用的函数,以便与mysql数据库进行交互.当我在我的服务器上测试它时,我收到此错误:
"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)"
Run Code Online (Sandbox Code Playgroud)
我可以在我的电脑上使用它们(使用XAMPP),我可以使用服务器中的命令行浏览数据库的表格.但是,网页无法连接.我已经检查了密码但没有结果.这是正确的(否则我无法从命令行登录到mysql).
该函数的调用如下:
$conn = new mysqli("localhost", "root", "password", "shop");
Run Code Online (Sandbox Code Playgroud)
我必须在我的服务器中设置一些东西吗?谢谢
编辑:PHP版本5.3.3-7 + squeeze1 mysql版本:5.1.49-3都在debian上
gc5*_*gc5 76
我用这种方式解决了:我用root用户名登录了
mysql -u root -p -h localhost
Run Code Online (Sandbox Code Playgroud)
我创建了一个新用户
CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';
Run Code Online (Sandbox Code Playgroud)
然后我创建了数据库
CREATE DATABASE shop;
Run Code Online (Sandbox Code Playgroud)
我为此数据库授予了新用户的权限
GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';
Run Code Online (Sandbox Code Playgroud)
然后我注销root并登录新用户
quit;
mysql -u francesco -p -h localhost
Run Code Online (Sandbox Code Playgroud)
我使用脚本重建了我的数据库
source shop.sql;
Run Code Online (Sandbox Code Playgroud)
就是这样..现在从php工作没有问题的电话
$conn = new mysqli("localhost", "francesco", "some_pass", "shop");
Run Code Online (Sandbox Code Playgroud)
感谢您的所有时间:)
小智 10
root @ localhost的数据库中是否有用户帐户条目?在MySQL中,您可以通过主机设置不同的用户帐户权限.可能有几个具有相同名称的不同帐户与他们连接的主机相结合.最常见的是root@127.0.0.1和root @ localhost.这些可以具有不同的密码和权限.确保root @ localhost存在并具有您期望的设置.
根据你的解释,我愿意打赌,这就是问题所在.从另一台PC连接使用的帐户与root @ localhost不同,我认为命令行使用root@127.0.0.1进行连接.
从你到目前为止所说的,这听起来像PHP5.3中的MySQL驱动程序连接到较旧的MySQL版本4.1时遇到问题.请访问http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx
这里有一个类似的问题,有一些有用的答案,无法使用旧的身份验证连接到MySQL 4.1+
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
Run Code Online (Sandbox Code Playgroud)
对于具有旧密码的帐户,这将返回16;对于具有新密码的帐户,将返回41(对于没有密码的帐户,这将返回0,您可能也想要照顾这些密码).使用MySQL前端的用户管理工具(如果有的话)或
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges
Run Code Online (Sandbox Code Playgroud)
小智 6
简单的。
打开xampp控制面板 -> Config -> my.ini 用记事本编辑。现在在下面添加这个[mysqld]
skip-grant-tables
Run Code Online (Sandbox Code Playgroud)
节省。启动apache和mysql。
我希望对你有帮助
小智 5
我认为代码应该是:
$connect = new mysqli("host", "root", "", "dbname");
因为 root 没有密码。在(using password: YES)被说“你正在使用的密码与此用户”
| 归档时间: |
|
| 查看次数: |
562277 次 |
| 最近记录: |