如何阻止 DBI 连接将 @localhost 添加到我的用户名?
How do I stop DBI connect from adding @localhost to my username?
这是一个新手问题 - 不要想太多!
我正在尝试建立从 perl 到远程服务器的 MySQL 数据库的连接,我可以从 PHP 或 TOAD 连接到它,所以我清楚地知道我的主机,数据库名、用户名和密码是。
但是,当我尝试使用 Padre IDE 从我新安装的 Strawberry Perl 中执行此操作时,某个地方(可能是某个配置文件?)一直坚持要在我的用户名中添加“@localhost”。
哦,我正在使用专为 MSWin32-x86-多线程构建的 perl v5.10.1 (*)。
我正在尝试:
my $DBHOST = "50.88.64.41";
my $DBNAME = "keystrokes";
my $DBUSER = "wade\@'50.88.64.41'";
...
# MySQL database configuration
my $dsn = "DBI:mysql:database=$DBNAME,host=$DBHOST,port=3306";
所以我得到了这个输出(为了保护隐私而稍微消毒):
DBI connect('database=keystrokes,host=50.88.64.41,port=3306','wade@50.88.64.41',...) 失败:用户'wade@ 的访问被拒绝50.88.64.41'@'localhost'(使用密码:YES)在 C:\Bitnami\wampstack-8.0.8-0\apache2\htdocs\perl\firstscript.pl line 2.
无论我输入的用户名是“wade”还是“wade@50.88.64.41”或“wade@'50.88.64.41'”然后添加“@'localhost',然后尝试使用它作为用户名,这当然会失败,因为我不在那台机器上而且它不是我的本地主机。
有什么解决办法吗?我在这个论坛上找不到任何明确的答案。
谢谢!
我觉得你的问题和你想的完全相反。 MySQL 通过将“@localhost”添加到您的用户名来做正确的事。您不需要的是您添加的“@50.88.64.41”。十五年来,我一直将 Perl 程序连接到 MySQL 数据库,而且我从来不需要向用户名添加类似的内容。
您将在 MySQL 连接消息中看到的“@host”是由 MySQL 客户端库在建立连接时添加的 - 通过查看连接请求的 IP 地址来自.
所以只需将您的代码更改为:
my $DBUSER = 'wade';
它应该可以工作。
传统上,您会在 mysql.user
table 中看到每个用户的两行。一个主机为 localhost
,另一个主机为 %
(意思是“任何其他主机”)。这使得控制对数据库的访问变得更加容易 - 通常您只允许访问与数据库位于同一服务器上的用户。
这是一个新手问题 - 不要想太多!
我正在尝试建立从 perl 到远程服务器的 MySQL 数据库的连接,我可以从 PHP 或 TOAD 连接到它,所以我清楚地知道我的主机,数据库名、用户名和密码是。
但是,当我尝试使用 Padre IDE 从我新安装的 Strawberry Perl 中执行此操作时,某个地方(可能是某个配置文件?)一直坚持要在我的用户名中添加“@localhost”。
哦,我正在使用专为 MSWin32-x86-多线程构建的 perl v5.10.1 (*)。 我正在尝试:
my $DBHOST = "50.88.64.41";
my $DBNAME = "keystrokes";
my $DBUSER = "wade\@'50.88.64.41'";
...
# MySQL database configuration
my $dsn = "DBI:mysql:database=$DBNAME,host=$DBHOST,port=3306";
所以我得到了这个输出(为了保护隐私而稍微消毒):
DBI connect('database=keystrokes,host=50.88.64.41,port=3306','wade@50.88.64.41',...) 失败:用户'wade@ 的访问被拒绝50.88.64.41'@'localhost'(使用密码:YES)在 C:\Bitnami\wampstack-8.0.8-0\apache2\htdocs\perl\firstscript.pl line 2.
无论我输入的用户名是“wade”还是“wade@50.88.64.41”或“wade@'50.88.64.41'”然后添加“@'localhost',然后尝试使用它作为用户名,这当然会失败,因为我不在那台机器上而且它不是我的本地主机。
有什么解决办法吗?我在这个论坛上找不到任何明确的答案。 谢谢!
我觉得你的问题和你想的完全相反。 MySQL 通过将“@localhost”添加到您的用户名来做正确的事。您不需要的是您添加的“@50.88.64.41”。十五年来,我一直将 Perl 程序连接到 MySQL 数据库,而且我从来不需要向用户名添加类似的内容。
您将在 MySQL 连接消息中看到的“@host”是由 MySQL 客户端库在建立连接时添加的 - 通过查看连接请求的 IP 地址来自.
所以只需将您的代码更改为:
my $DBUSER = 'wade';
它应该可以工作。
传统上,您会在 mysql.user
table 中看到每个用户的两行。一个主机为 localhost
,另一个主机为 %
(意思是“任何其他主机”)。这使得控制对数据库的访问变得更加容易 - 通常您只允许访问与数据库位于同一服务器上的用户。