source

Perl DBI 모듈을 사용하여 계정 호스트를 변경하는 방법

goodcode 2023. 1. 29. 20:39
반응형

Perl DBI 모듈을 사용하여 계정 호스트를 변경하는 방법

에는 Perl 는 Perl 어플리케이션입니다.10.10.3.39

또한 새로운 구현되었기 때문에 "MySQL "를 가진 해야 합니다.10.10.1.18

이름 "DB" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "B" "A" "A" "B" "A" "A" "A" "A" "A" "A" "A'user'@'10.10.3.39'은 IP를 할 수 10.10.3.39

했습니다.mysql -h 10.10.1.18 -u user -p

[hanief@dev39 project]$ mysql -h 10.10.1.18 -u user -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 19484169
Server version: 10.0.15-MariaDB mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

스크립트가 .test_db.pm펄을 사용하다

use DBI;

$user = "user";
$pw = 'password';
$dbh = DBI->connect("DBI:mysql:database=mysql;host=10.10.1.18;mysql_enable_utf8=1",$user, $pw, %attr) or die "Cannot connect to MySQL server\n";

나서 명령어를 요.perl test_db.pm

[hanief@dev39 project]$ perl test_db.pm
DBI connect('database=mysql;host=10.10.1.18;port=3306;mysql_enable_utf8=1','user',...)
failed: Access denied for user 'user'@'%' to database 'mysql' at test_db.pm line 6.
Cannot connect to MySQL server

@'%' 배후에

했습니다.$user 삭제:

  • $user = "user\@10.10.3.39";
failed: Access denied for user 'user@10.10.3.39'@'10.10.3.39' (using password: YES) at test_db.pm line 6.
  • $user = "user\@'10.10.3.39'";
failed: Access denied for user 'user@'10.10.3.39''@'10.10.3.39' (using password: YES) at test_db.pm line 6.
  • $user = "'user'\@'10.10.3.39'";
failed: Access denied for user 'user'@'10.10.3.39'@'10.10.3.39' (using password: YES) at test_db.pm line 6.

하지만 여전히 효과가 없었다.서버가 여전히 DB 서버에 연결할 수 없습니다.

@'10.10.3.39'이치노그랬는지 모르겠어% '아까'로 요.10.10.3.39

제 사건에 대한 해결책은요?

여기서 무슨 일이 일어나고 있는지는 잘 모르겠지만, 빛을 조금 비출 수 있을 것 같아요.

MySQL(그리고 MariaDB)은 사용자 이름과 비밀번호에만 의존하지 않는 로그인 시스템을 가지고 있습니다., 도 고려됩니다. '마음'을 mysql.user의 열은 '열'입니다.Host,User ★★★★★★★★★★★★★★★★★」Password.

Host컬럼은 흥미롭습니다.IP 주소 또는 호스트 이름을 포함할 수 있지만 "모든 호스트"를 의미하는 기호 '%'를 포함할 수도 있습니다.

DBA가 다음과 같은 이점을 제공했다고 발표했을 때:

이름: "이렇게 하면 에 대한 합니다."'user'@'10.10.3.39'

user ★★★★★★★★★★★★★★★★★」10.10.3.39 mysql.usertable.syslog를 클릭합니다.

, 당신의 ,, 신, 의를 의미합니다.$user는 수수 variable variable variable로 설정해야 합니다.로 .user 아니라, 이에요.user@10.10.3.39 MySQL - IP 。

따라서 다음과 같은 오류가 발생할 경우:

실패: 사용자 'user@10.10.39'@'10.10.39'에 대한 액세스가 거부되었습니다.

첫 번째 따옴표 쌍의 비트("user@10.10.39")는 사용하려는 사용자 이름이고 두 번째 따옴표 쌍의 비트("10.10.39")는 MySQL이 사용자가 접속하고 있다고 생각하는 IP 주소입니다. 사용자 이 에 하지 않기 .mysql.userstable.syslog를 클릭합니다.

이제 첫 번째 예시를 살펴보겠습니다.

$dbh = DBI->connect("DBI:mysql:database=mysql;host=10.10.1.18;mysql_enable_utf8=1",$user, $pw, %attr)
  or die "Cannot connect to MySQL server\n";

그러면 다음 오류가 발생합니다.

실패: 사용자 'user'@'%에 대한 액세스가 거부되었습니다.

이 에러로 % 가 호스트명으로 사용되고 있는 것은, MariaDB 서버가, 유저에게 허가되고 있는 특정의 IP 주소의 어느 쪽인가로서 송신원의 IP 주소를 인식하지 않았던 것을 의미합니다.

이 경우 두 가지 사항을 다시 확인해 보겠습니다.

  • 확실히 10.10.39부터 접속을 시도하고 있습니까?여기에는 사용자와 DB 서버 간에 IP 주소를 변경할 수 있는 프록시가 있는지 확인하는 작업이 포함됩니다.
  • IP 주소는,mysql.user테이블 정말 10.10.39?아니면 그 값에 오타가 있는 걸까요?

이 게시물이 "당신의 문제에 대한 해결책이 여기 있습니다"가 아니라는 것을 알고 있지만, 이 게시물이 진행 상황을 좀 더 자세히 설명하고 조사할 수 있는 몇 가지 방법을 제공해주길 바랍니다.

언급URL : https://stackoverflow.com/questions/69833666/perl-how-to-change-account-host-using-dbi-module

반응형