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

SHOW GRANTSmysql 데이터베이스에서 수행 하면

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

내가 착각하지 않았다면 root@localhost사용자 root는에서만 서버에 액세스 할 수 있습니다 localhost. root동일한 네트워크에있는 다른 모든 컴퓨터에서이 mysql 서버에 액세스 할 수있는 권한 을 부여 하도록 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-addressin의 값을 확인하십시오.로 my.cnf설정되어 있으면 모든 IP 또는 연결하려는 모든 IP에서 액세스를 허용하도록 127.0.0.1변경할 수 있습니다 0.0.0.0.

  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 등을 변경하여 제한 할 수도 있습니다.


그래도 해결되지 않으면 my.cnf 또는 my.ini도 수정하고이 행을 주석 처리하십시오.

bind-address = 127.0.0.1#bind-address = 127.0.0.1

skip-networking#skip-networking

  • MySQL을 다시 시작하고 위의 단계를 다시 반복하십시오.

Raspberry Pi, 아래에서 bind-address 구성을 찾았습니다. \etc\mysql\mariadb.conf.d\50-server.cnf


답변

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


답변

/etc/mysql/mysql.conf.d/mysqld.cnf파일을 열고 다음 줄에 주석을 추가합니다.

#bind-address = 127.0.0.1


답변

제 경우에는 cent OS에서 원격 mysql 서버에 연결하려고했습니다. 많은 솔루션 (모든 권한 부여, IP 바인딩 제거, 네트워킹 활성화)을 수행 한 후에도 문제가 여전히 해결되지 않았습니다.

결과적으로 다양한 솔루션을 조사하는 동안 iptables를 발견하여 mysql 포트 3306이 연결을 허용하지 않는다는 것을 깨달았습니다.

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

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

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

iptables -A INPUT -i eth0 -p tcp -m tcp -dport 3306 -j ACCEPT

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

서비스 iptables 중지

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