IT

사용자를 위해 mysql 서버에 원격 액세스 권한을 부여하는 방법은 무엇입니까?

lottoking 2020. 7. 21. 07:44
반응형

사용자를 위해 mysql 서버에 원격 액세스 권한을 부여하는 방법은 무엇입니까?


내가 할 경우 SHOW GRANTS내 MySQL 데이터베이스에 내가 도착

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' 
    IDENTIFIED BY PASSWORD 'some_characters' 
    WITH GRANT OPTION

내가 실수하지 않은 root@localhost사용자 root는에서 서버에만 액세스 할 수 있음을 의미합니다 localhost. MySQL의 root이 다른 모든 머신 (같은 네트워크에있는) 에서이 MySQL의에 액세스 할 서버 수있는 권한 을 부여 하도록 하려면 어떻게해야 우리 합니까?


이것은 다음의 모든 컴퓨터에서 동일한 암호로 루트 액세스 권한을 부여합니다 *.example.com.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com' 
    IDENTIFIED BY 'some_characters' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

이름 확인이 작동하지 않는 IP 또는 서브넷별로 액세스 권한을 부여 할 수도 있습니다.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
    IDENTIFIED BY 'some_characters'  
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

MySQL GRANT구문 문서.


시험 :

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;

먼저 mysql과 루트 사용자가 외부에서 액세스 할 수 있도록 몇 가지 단계를 수행해야합니다.

  1. 안 함 사용 skip-networking에서 my.cnf(예 : /etc/mysql/my.cnf)

  2. 의 값을 확인 bind-addressmy.cnf에 그것의 세트가있는 경우, 127.0.0.1당신은 그것을 변경할 수 0.0.0.0있는 모든 IP의 접근을 허용하거나 연결 해당 IP 뭐든간에.

  3. 모든 IP에서 루트 사용자에게 원격 액세스 권한 부여 (또는 대신 IP 지정 %)

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
        IDENTIFIED BY 'your_root_password'
        WITH GRANT OPTION;
    FLUSH PRIVILEGES;`
    
  4. MySQL 서비스를 다시 시작하십시오.

    sudo service mysql restart
    


GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' 
    IDENTIFIED BY 'YOUR_PASS' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;  

*.* = DB.TABLE 사용자를 특정 데이터베이스 및 특정 테이블로 제한 할 수 있습니다.

'root'@'%'당신은 당신이 만든 모든 사용자와 루트를 사용할 수 있으며 %는 모든 IP를 허용하는 것입니다. % .168.1.1 등을 변경하여 제한 할 수도 있습니다.


다른 사람들이 공유하는 SQL 보조금은 작동합니다. 여전히 데이터베이스에 액세스 할 수있는 경우 포트에 대한 방화벽을 제한 할 수 있습니다. 연결을 여는 방법은 서버 유형 (및 그 사이의 모든 라우터)에 따라 진행됩니다. TCP 포트 3306 인바운드를 외부 시스템 (모두 / 서브넷 / 단일 IP / 등)에 대한 모두 액세스 규칙을 제공하십시오.


제 경우에는 센트 OS에서 원격 mysql 서버에 연결했습니다. 많은 솔루션 (모든 권한 부여, IP 바인딩 제거, 사용)이 여전히 문제가 해결되지 않습니다.

mysql 포트 3306이 연결을 수락하지 않는다는 것을 발견했습니다.

다음은이 문제를 확인하고 해결 한 방법에 대한 작은 메모입니다.

  • 포트가 연결을 수락하는지 확인 :
텔넷 (mysql 서버 ip) [portNo]

-포트에서 연결을 허용하는 ip 테이블 규칙 추가 :

iptables -A 입력 -i eth0 -p tcp -m tcp -dport 3306 -j 수락

-프로덕션 환경에는 권장하지 않지만 iptables가 구성되지 않을 경우 규칙을 추가해도 문제가 해결되지 않습니다. 이 경우 다음을 수행해야합니다.

서비스 iptables 중지

도움이 되셨기를 바랍니다.


두 단계 :

  1. 와일드 카드를 사용하여 사용자를 설정하십시오.
    create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION

  2. vim /etc/my.cnf
    다음을 추가하십시오.
    bind-address=0.0.0.0

서버를 다시 시작하면 연결에 문제가 없어야합니다.


/etc/mysql/mysql.conf.d/mysqld.cnf파일을 다음 줄 주석으로 처리하십시오.

#bind-address = 127.0.0.1

이것은 나를 위해 일했습니다. 그러나 내가 영향을받지 않는 것을 먼저 시도한 이상한 문제가 있습니다. phpmyadmin 페이지를 업데이트하고 어떻게 든 작동했습니다.

local-xampp-mysql에 액세스해야하는 경우 xampp-shell-> 명령 프롬프트를 실행할 수 있습니다.

그런 다음 mysql -uroot -p --port = 3306 또는 mysql -uroot -p (암호가 설정된 경우). 그런 다음 mysql 셸 페이지에서 액세스 권한을 부여 할 수 있습니다 (localhost / phpmyadmin에서도 작동 가능).

누군가 가이 주제를 발견하고 초보자 문제가 있으면 추가하십시오.

참고 URL : https://stackoverflow.com/questions/6239131/how-to-grant-remote-access-permissions-to-mysql-server-for-user

반응형