programing

호스트 ' xxx.xx.xxx .xxx'은(는) 이 MySQL 서버에 연결할 수 없습니다.

linuxpc 2023. 9. 13. 22:22
반응형

호스트 ' xxx.xx.xxx .xxx'은(는) 이 MySQL 서버에 연결할 수 없습니다.

이건 아주 간단해야 하는데, 평생 쓸 수가 없어요.
MySQL 서버에 원격으로 연결하려고 할 뿐입니다.

  • 연결 위치:

    mysql -u root -h localhost -p  
    
  • 잘 작동하지만 시도해 봅니다.

    mysql -u root -h 'any ip address here' -p
    
  • 실패하고 다음 오류가 발생합니다.

    오류 1130(00000):호스트 ' xxx.xx.xxx .xxx'은(는) 이 MySQL 서버에 연결할 수 없습니다.

mysql.user표에서 호스트가 'localhost'인 사용자 'root'에 대한 항목과 호스트가 '%'인 사용자에 대한 항목이 정확히 동일합니다.

어찌할 바를 몰라 앞으로 어떻게 진행해야 할지 모르겠습니다.어떤 아이디어라도 환영합니다.

보안상의 예방책일 수도 있습니다.새 관리자 계정을 추가해 볼 수 있습니다.

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

파스칼과 다른 사람들이 언급한 것처럼, 어떤 IP에도 이런 종류의 접근이 가능한 사용자를 두는 것은 좋은 생각이 아닙니다.관리 사용자가 필요한 경우 root을 사용하고 localhost에 둡니다.다른 작업의 경우 필요한 권한을 정확히 지정하고 파스칼이 아래에 제시한 대로 사용자의 접근성을 제한합니다.

편집:

MySQL FAQ에서 다음을 참조하십시오.

액세스가 거부되는 이유를 알 수 없으면 와일드카드('%' 또는 '_'자를 포함하는 항목)를 포함하는 Host 값을 가진 모든 항목을 사용자 테이블에서 제거합니다.매우 일반적인 오류는 Host= '%' 및 User= 'some_user'로 새 항목을 삽입하면 동일한 시스템에서 연결할 로컬 호스트를 지정할 수 있다고 생각하는 것입니다.이 작업이 작동하지 않는 이유는 기본 권한에 Host= 'localhost' 및 User= ''이(가) 있는 항목이 포함되어 있기 때문입니다.해당 항목의 호스트 값 'localhost'가 '%'보다 구체적이므로 localhost에서 연결할 때 새 항목에 우선하여 사용됩니다.올바른 절차는 Host= 'localhost' 및 User= 'some_user'로 두 번째 항목을 삽입하거나 Host= 'localhost' 및 User= ''로 항목을 삭제하는 것입니다.항목을 삭제한 후에는 승인 테이블을 다시 로드하기 위해 FLUSH PROFGES 문을 발행해야 합니다.섹션 5.4.4 "접근 제어, 1단계: 연결 확인"도 참조하십시오.

하나는 하나를 만들어야 합니다.new MySQL User을 할당합니다.Query prompt 프롬프트phpMyAdmin:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

쿼리를 하면 4개의 쿼리로 됩니다.username / password

루트를 사용하고 있는데도 '호스트 XXX는 이 MySQL 서버에 연결할 수 없습니다'라는 오류 메시지가 유사했습니다.root에 올바른 권한이 있는지 확인하는 방법은 다음과 같습니다.

설정:

  • 우분투 14.04 LTS
  • MySQL v5.5.37

해결책

  1. 에서 아래에서 파일 etc/mysql/my.cnf

  2. 확인:

    • port(기본값:port = 3306)
    • bind-address(기본값:bind-address = 127.0.0.1; 모두에게 마음을 열고 싶다면 이 줄에 댓글을 달기만 하면 됩니다.는 10어,제 10.1.1.7에 있다고 .)
  3. (사용자의 가 포트 하면). MySQL은 사용자의 원격 주소로 .123.123입니다(파일 3306에서 123.123.123).root그리고 데이터베이스 '데이터 입력'에 대한 권한을 변경하고 싶습니다.IP 주소, 포트 및 데이터베이스 이름을 설정으로 변경해야 함)

    mysql -u root -p
    Enter password: <enter password>
    mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password';
    mysql>FLUSH PRIVILEGES;
    mysql>exit
    
  4. sudo 서비스 mysqld 재시작

  5. 이제 데이터베이스에 원격으로 연결할 수 있습니다.예를 들어 MySQL Workbench를 사용하면서 'Hostname:10.1.1.7', 'Port:3306', 'Username:root'을 입력하고 있습니다.

다음 단계만 수행하면 됩니다.

  1. 로컬 호스트를 통해 MySQL에 연결

    mysql -uroot -p
    
    • MySQL 서버가 Kubernetes(K8s)에서 실행 중이고 NodePort를 통해 액세스되는 경우

      kubectl exec -it [pod-name] -- /bin/bash
      mysql -uroot -p
      
  1. 사용자생성

    CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    
  2. 권한 부여

    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
    
  3. 플러시 권한

    FLUSH PRIVILEGES;
    

모든 호스트 이름에서 사용자에게 액세스 권한을 부여해야 합니다.

phpmyadmin에서 새 권한을 추가하는 방법입니다.

권한 이동 > 새 사용자 추가

enter image description here

원하는 사용자 이름으로 임의의 호스트 선택

enter image description here

간단한 방법:

Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD'; 

그리고나서

FLUSH PRIVILEGES;

알았어!

*Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server는 MySQL 서버에서 MySQL 클라이언트로 회신합니다.호스트 이름이 아닌 IP 주소를 반환하는 방법에 주목합니다.

하려는과 mysql -h<hostname> -u<somebody> -pIP 주소와 함께 이 메시지를 반환하면 MySQL 서버는 클라이언트에서 역방향 조회를 할 수 없습니다.이는 MySQL 클라이언트를 허가사항에 매핑하는 방식이기 때문에 매우 중요합니다.

할 수 있는지 확인해 보세요.nslookup <mysqlclient>MySQL 서버에서.이것이 안 되면 DNS 서버에 항목이 없습니다. 파일, HOSTS에을다수을의(다수n을에을y<ipaddress> <fullyqualifiedhostname> <hostname><- 여기 있는 순서가 중요할 수 있습니다.

MySQL 클라이언트의 역방향 조회를 가능하게 하는 서버의 호스트 파일의 항목이 이 문제를 해결했습니다.

향후 원격 mysql 연결에 사용 가능합니다!

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 지시문으로 시작하는 줄로 이동합니다.다음과 같이 보여야 합니다.

    bind-address            = 0.0.0.0

루트 터미널로 mysql에 로그인

    mysql -u root -p
    -- root password

    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

    FLUSH PRIVILEGES;

    EXIT;

마지막으로 다음 명령을 사용하여 원격으로 데이터베이스에 연결할 수 있는 컴퓨터 전용 권한을 부여합니다.

    sudo ufw allow from remote_IP_address to any port 3306

(INSERT을 수동으로 , 을 하는 으로 (INSERT, UPDATE )을 .FLUSH PRIVILEGES서버에 허용 테이블을 다시 로드하도록 지시하는 문입니다.

PS: 호스트가 어떤 사용자를 위해 연결되도록 허용하는 것을 권장하지 않습니다(특히,root사용). 클라이언트/서버 응용프로그램에 mysql을 사용하는 경우 서브넷 주소를 선택합니다.웹 서버나 애플리케이션 서버에서 mysql을 사용하는 경우 특정 IP를 사용합니다.

MySql의 GUI Tool(SQLyog)에서 제공하는 인터페이스만 사용하면 됩니다.

User manager를 클릭합니다.

이제 다른 원격 PC에 대한 액세스를 허용하려면 아래 그림과 같이 호스트 필드 값이 %(와일드카드)인지 확인하십시오.

enter image description here

여기에 나와 있는 대부분의 답변은 두 가지 호스트 값으로 사용자를 생성하는 것을 보여 줍니다: 하나는 다음과 같습니다.localhost , 에 하나.%.

루트와 같은 기본 제공 로컬 호스트 사용자를 제외하고는 이 작업을 수행할 필요가 없습니다.단순히 어디서든 로그인할 수 있는 새로운 사용자를 만들고 싶다면 다음을 사용할 수 있습니다.

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;

잘 될 겁니다(다른 사람들이 언급했듯이, 어떤 도메인의 사용자에게 관리 권한을 부여하는 것은 끔찍한 생각입니다.)

MySQL WorkBench를 사용하는 경우 다음과 같은 작업을 쉽게 수행할 수 있습니다.

  1. 메뉴에서 [서버] -> [사용자 및 권한]을 선택합니다.

  2. 왼쪽 하단에 있는 "계정 추가" 클릭

  3. 양식에 사용자 이름, 호스트 일치(%는 모든 호스트를 의미함) 및 암호를 채웁니다.

  4. 오른쪽 하단에 있는 "Apply" 클릭

이 일이 끝나면 당신은 가도 좋습니다.그런 다음 구성을 세분화하려면 "관리 역할" 탭을 사용하여 사용자가 사용할 수 있는 명령어(SELECT, ALTER 등)를 설정하고 "Schema 권한" 탭을 사용하여 사용자 상호 작용을 특정 스키마로 제한할 수 있습니다.

위의 어떤 대답도 저에겐 통하지 않았습니다.많은 연구 끝에 해결책을 찾았습니다.제가 늦을지도 모르지만, 이것은 미래에 다른 사람들에게 도움이 될 것입니다.

터미널에서 SQL 서버에 로그인

 mysql -u root -p
 -- root password
GRANT ALL ON *.* to root@'XX.XXX.XXX.XX' IDENTIFIED BY 'password';

이를 통해 권한 문제가 해결될 것입니다.

Before solving error

After solving issue

해피코딩!!

간단한 방법은 root account로 phpmyadmin에 로그인하고, 거기서 mysql 데이터베이스로 가서 사용자 테이블을 선택하고, root account를 편집하고, host 필드에 % wild card를 추가하는 것입니다. 그리고 ssh flush 권한을 통해.

 FLUSH PRIVILEGES;

이것이 최근에 설치된 mysql인 경우, 다른 것을 변경하기 전에 간단히 이 명령을 실행한 다음 다시 시도하십시오.

flush privileges;

이것만으로도 Ubuntu 16.04, mysql 5.7.20. YMMV에서 문제가 해결되었습니다.

호스팅 제어판에서 더 나은 방법을 찾으십시오(여기서는 DirectAdmin을 사용합니다).

제어판의 대상 서버 DB로 이동하기만 하면 됩니다.MySQL 관리 -> DB 선택 -> "호스트 액세스"를 선택하면 원격 호스트를 여기에 추가하면 바로 작동합니다.

플래스크 등 다른 C 패널에도 비슷한 옵션이 있는 것 같습니다.

당신에게도 도움이 되었기를 바랍니다.

저도 같은 문제에 직면하고 있었습니다. 저는 2분만에 해결되었습니다. 저는 그냥 cpanel을 통한 화이트리스트 IP입니다.

서버 A에서 서버 B의 데이터베이스를 연결하려고 한다고 가정합니다.서버 B Cpanel->Remote MySQL-> 서버 A IP 주소를 입력하면 됩니다.

윈도우즈에서 실행 중인 경우 MySQL 서버 인스턴스 구성 마법사를 실행하는 것이 간단한 해결책입니다.시작 메뉴의 MYSQL 그룹에 있습니다.마지막 화면에서 두 번째로 "원격 컴퓨터에서 루트 액세스 허용" 상자를 클릭합니다.

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

이 오류는 루트에 대한 비밀번호가 없기 때문입니다. 그리고 이것은 아마도 당신이 외부에서 연결하려고 할 때 당신과 함께 발생했을 것입니다.

WAMP Server + Windows 10이 있고 Wamp 아이콘 우클릭보다 개발에 사용하는 경우 =>Wamp Settings=>Check Allow Virtual Hosts other than 127* enter image description here

음, 당신이 할 수 있는 것은 그냥 mysql.cfg 파일을 여는 것이고 Bind-address를 이것으로 변경해야 합니다.

bind-address = 127.0.0.1

그리고 나서 mysql을 재시작하면 서버를 여기에 연결할 수 있습니다.

이것 좀 보세요. 당신은 그것에 대한 아이디어를 가질 수 있습니다.

진짜 솔입니다.

이 대답이 누군가에게 도움이 될지도...

이 모든 대답은 도움이 되지 않았고, 그리고 나서 저는 제가 중요한 한 가지를 확인하는 것을 잊었다는 것을 깨달았습니다.항구 :)

다른 포트에서 실행되는 도커 컨테이너에서 mysql을 실행합니다.포트 3306의 호스트 머신을 가리키고 있었는데, 이 머신에는 mysql 서버가 실행되고 있습니다.내 컨테이너는 포트 33060의 서버를 노출합니다.그래서 지금까지 서버를 잘못 보고 있었어요! doh!

전 그러려고 합니다.
  1. 서비스 호출에서 오류가 발생했습니다.구독하기는 각 2에 정의되어 있지 않으며, 구독하기 위해서는 운영자 내부에서 복귀해야 한다고 합니다.반품 명세서도 가지고 있습니다.DirectAdmin저의 경우 e2e 테스트 중에만 오류가 발생하였습니다.그것은 원인이었습니다.
  2. 의 인증내 가로채기에서.인터셉터.MySQL Management은 당신의 의 에서 의 은 의의 예 코드에서 당신은 당신의 은 에서 의 은
  3. 교환원이 콜백을 두 번 받는 경우, 한 번만 받아야 합니다.오류 처리 코드를 캐치콜백으로 이동할 수 있습니다.database당신은 또한 수입할 필요가 있을 것입니다.
  4. 그리고.Accesse Host오퍼레이터들.xxx.xx.xxx.xx: : 할 은 과 과 은 할 .
  5. 캐치 핸들러에서는 실제로 오류를 포착하지 못합니다. 여전히 콘솔에 표시됩니다.Add Host 서비스를 ① 다른 서비스를 ② 다른 공통 서비스를 사용하는 경우 ③ ④ ⑤

당신의 경우, 당신은 간단히 사용할 수 있습니다.your_database_username은 당신의 을 입니다.your_database_password을 공백으로 사용하여 로는능환능는n
할 수 있고 를 사용할 수 .

의 상태를 하다 ㅜㅜㅜ

프로젝트마다 RxJS 버전이 다를 때 이 오류가 발생했습니다.는 여러 가지 RxJS가 있기 합니다.

. 결국함수는 다음과 같은 평탄화 연산자로부터 호출을 받습니다.

.

나는 다른 관측 가능한 것을 돌려주는 것을 잊고 있었습니다.

docker exec -it your_container_name_or_id bash

코마stray coma() 로 로 )

mysql -u your_user -p

에서 RxJS에서

은 ' 않는' 은 '보이지 않는' ' ' 가 됩니다.

SELECT host, user FROM mysql.user;

파이프 전체를 나사로 고정시키고 매우 혼란스러운 오류 메시지를 발생시키는 연산자입니다. 이 경우에는 실제 논리와는 아무런 관련이 없습니다.

이것을 경험하는 사람들을 위한 힌트.이런 일이 일어날 수 있습니다. null과 같이 관측 가능한 반환 값을 받지 못합니다.기본 케이스를 추가하기만 하면 항상 관측치가 반환됩니다.
그리고 당신이 제공하는 것은 당신의 헤더의 요청에 다음과 같이 대답합니다.
을 하여 하였습니다. .
와 ㅇㅇㅇ 데이터를 얻기 위해서 입니다.을 알아차리다
하다를 오류를 범실.

Δ Δ Δ 캐치/에러 Δ 를 테스트하려고 때.

그것은 예상했던 것과 같이 나에게 오류를 보여주고 있었습니다. 서비스에서 반환을 입력합니다.
는 에 하게 되는 을 하여 했습니다 는 했습니다 하여 을 는 되는 에 활자값
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

Some tips:

  • 권한 목록사용show grants;
  • create a VPN and just add the ip of the tunnel

Problem: root@localhost is unable to connect to a fresh installation of mysql-community-server on openSUSE 42.2-1.150.x86_64. Mysql refuses connections - period.

Solution:

$ ls -l /var/lib/mysql/mysql/user.*
-rw-rw---- 1 mysql mysql     0 Apr 29 19:44 /var/lib/mysql/mysql/user.MYD
-rw-rw---- 1 mysql mysql  1024 Apr 29 19:44 /var/lib/mysql/mysql/user.MYI
-rw-rw---- 1 mysql mysql 10684 Apr 29 19:44 /var/lib/mysql/mysql/user.frm

File user.MYD has 0 size (really ?!). I copied all 3 files from another working system.

$ /usr/sbin/rcmysql stop
$ cd /var/lib/mysql/mysql/
$ scp root@othersytem:/var/lib/mysql/mysql/user.* ./
$ /usr/sbin/rcmysql start
$ cd -
$ mysql -u root -p

I was able to log in. Then, it was just a matter of re-applying all schema privileges. Also, if you disabled IPv6, re-enable it temporary so that root@::1 account can also work.

if you are trying to execute mysql query withouth defining connectionstring, you will get this error.

Probably you forgat to define connection string before execution. have you check this out? (sorry for bad english)

All of the answers here didn't work in my case so I guest this may help other users in the future. This can also be a problem in our code, not just in MySQL alone.

사용하시는 경우VB.NET

Instead of this code:

 Dim server As String = My.Settings.DB_Server
 Dim username As String = My.Settings.DB_Username
 Dim password As String = My.Settings.DB_Password
 Dim database As String = My.Settings.DB_Database

 MysqlConn.ConnectionString = "server=" & server & ";" _
 & "user id=" & username & ";" _
 & "password=" & password & ";" _
 & "database=" & database

 MysqlConn = New MySqlConnection()

당신은 움직여야 합니다.MysqlConn = New MySqlConnection()제일 선에그래서 이렇게 될 겁니다.

 MysqlConn = New MySqlConnection()

 Dim server As String = My.Settings.DB_Server
 Dim username As String = My.Settings.DB_Username
 Dim password As String = My.Settings.DB_Password
 Dim database As String = My.Settings.DB_Database

 MysqlConn.ConnectionString = "server=" & server & ";" _
 & "user id=" & username & ";" _
 & "password=" & password & ";" _
 & "database=" & database

ReferenceURL : https://stackoverflow.com/questions/63384679/mariadb-create-user-using-hostname

반응형