相关疑难解决方法(0)

"连接失败:访问被拒绝用户'root'@'localhost'(使用密码:YES)"来自php函数

我写了一些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上

php mysql access-denied

57
推荐指数
6
解决办法
56万
查看次数

错误:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+

我收到以下错误:

数据库连接失败:mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+.请使用管理工具使用该命令重置密码SET PASSWORD = PASSWORD('your_existing_password').

这将存储一个新的,更安全的哈希值mysql.user.如果在PHP 5.2或更早版本执行的其他脚本中使用此用户,则可能需要从my.cnf文件中删除旧密码标志

我在我的本地机器上使用PHP 5.3.8和MySQL 5.5.16,我的主机(media temple)运行PHP 5.3 MySQL 5.0.51a.实时服务器上的版本比我机器上的版本旧.

如何修复此错误并从本地计算机连接到MySQL?

我知道这个帖子有类似的帖子,但是我已经尝试了所有这些帖子,但没有一个在工作.

php mysql sql database database-connection

23
推荐指数
1
解决办法
6万
查看次数

无法使用旧的不安全身份验证连接到MySQL 4.1+

我知道有很多问题与我的问题一样,但我希望你能帮助我找到另一个解决方案.

我们正在为我们的项目使用Symfony 2.5.10,PHP 5.4.44MySQL 4.1.20.

每当我尝试登录系统或任何与数据库连接有关的行为时(例如使用FOS命令添加新用户),我都会收到此错误:

SQLSTATE [HY000] [2000] mysqlnd无法使用旧的不安全身份验证连接到MySQL 4.1+.请使用管理工具使用命令SET PASSWORD = PASSWORD('your_existing_password')重置密码.这将在mysql.user中存储一个新的,更安全的哈希值.如果在PHP 5.2或更早版本执行的其他脚本中使用此用户,则可能需要从my.cnf文件中删除旧密码标志

我们已经尝试设置old_passwordsmy.cnf为0,重启MySQL,为MySQL用户设置新密码并重新启动MySQL,但仍然是相同的.每当我们在查询窗口中运行它时:

SELECT user, Length(Password) FROM mysql.user;
Run Code Online (Sandbox Code Playgroud)

它仍然显示16作为我们正在使用的用户的密码长度.并且在检查mysql服务器变量和设置时,old passwords也是ON(即使我们已经在my.cnf中将old_password设置为0).

这可能有什么问题?我将衷心感谢您的帮助.

更新:与此同时,我们删除了db用户的密码,以便我们能够访问数据库.但是我仍在寻找其他解决方案,因为我在网上找到的解决方案(比如old_passwords=1在my.cnf中删除或评论,将old_passwords设置为0并设置新密码然后重启)对我来说不起作用.

另一个更新:通常,这个问题的解决方案将old_passwords在mysql中启动,但是,如PHP文档中所述,

新的mysqlnd库不读取mysql配置文件(my.cnf/my.ini).

那么这是否意味着设置old_passwords为0 in my.cnf没有用?我仍然没有找到解决这个问题的方法.

我们是否需要在所使用的任何平台上进行升级?在此先感谢您的帮助.

php mysql password-hash symfony mysqlnd

13
推荐指数
1
解决办法
1834
查看次数

Mysql密码哈希方法旧vs新

我正在尝试从位于slicehost(两个不同的托管公司)的服务器中的php脚本连接到dreamhost的mysql服务器.我需要这样做,所以我可以在slicehost将新数据传输到dreamhost.使用转储不是一个选项,因为表结构是不同的,我只需要传输一小部分数据(100-200每日记录)问题是我在slicehost使用新的MySQL密码哈希方法,而dreamhost使用旧的,所以我得到

$link = mysql_connect($mysqlHost, $mysqlUser, $mysqlPass, FALSE); 

Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nodari'@'localhost' (using password: NO) 
Run Code Online (Sandbox Code Playgroud)

事实:

  • 我需要在slicehost继续使用新方法,我不能使用较旧的php版本/库
  • 数据库太大,无法每天使用转储进行传输
  • 即使我这样做,表格也有不同的结构
  • 我需要每天只复制它的一小部分(只有当天的变化,100-200条记录)
  • 由于表格如此不同,我需要使用php作为规范化数据的桥梁
  • 已经谷歌搜索了它
  • 已经与两位支持人员进行了交谈

对我来说更明显的选择是在dreamhost上开始使用新的MySQL密码哈希方法,但它们不会改变它,我不是root,所以我不能自己做.

任何疯狂的想法?

通过VolkerK消化:

mysql> SET SESSION old_passwords=0;
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT @@global.old_passwords,@@session.old_passwords, Length(PASSWORD('abc'));
+------------------------+-------------------------+-------------------------+
| @@global.old_passwords | @@session.old_passwords | Length(PASSWORD('abc')) |
+------------------------+-------------------------+-------------------------+
|                      1 |                       0 | …
Run Code Online (Sandbox Code Playgroud)

php mysql password-hash mysql-error-1044

8
推荐指数
2
解决办法
3万
查看次数

通过CodeIgniter连接到远程数据库

无法使用提供的设置连接到数据库服务器.

我一直无法将应用程序连接到远程数据库.我在运行应用程序时收到上面显示的错误.我在这个网站上看过这个问题的先前答案,但我没有运气解决它.从我学到的东西,我需要替换主机名,让我的mysql数据库接受外部连接,我已经完成了.我通过mysql命令行在我的database.php中尝试了相同的值,它可以工作.

那还有什么我可能会失踪?

这是我在database.php中的设置:

$active_group = 'staging';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'myDatabase';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

$db['staging']['hostname'] = 'XX.XX.XXX.XXX';
$db['staging']['username'] = 'user';
$db['staging']['password'] = 'pwd';
$db['staging']['database'] = 'myDatabase';
$db['staging']['dbdriver'] = 'mysql';
$db['staging']['dbprefix'] = '';
$db['staging']['pconnect'] = TRUE;
$db['staging']['db_debug'] = TRUE;
$db['staging']['cache_on'] …
Run Code Online (Sandbox Code Playgroud)

mysql codeigniter remote-access

7
推荐指数
1
解决办法
2万
查看次数

Ubuntu 16.04 mysql_old_password 无法加载

我想使用 shell 命令连接到外部服务器上的 mysql 数据库。Ubuntu 版本 16.04。

 mysql -uXXXXXX -pYYYYYY -h domain.com
Run Code Online (Sandbox Code Playgroud)

我得到错误:

mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2059 (HY000): Authentication plugin 'mysql_old_password' cannot be loaded: /usr/lib/mysql/plugin/mysql_old_password.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

mysql ubuntu

5
推荐指数
2
解决办法
8319
查看次数