[mysql] 전체 서브넷에 대해 MySQL에 대한 원격 액세스 권한을 부여하는 방법은 무엇입니까?

이 코드를 사용하여 하나의 IP에 대한 액세스 권한을 쉽게 부여 할 수 있습니다.

$ mysql -u root -p
Enter password:
mysql> use mysql
mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password';
mysql> FLUSH PRIVILEGES;

하지만 전체 서브넷 192.168.1. *이 데이터베이스에 원격으로 액세스하도록 허용해야합니다.

어떻게 할 수 있습니까?



답변

편집 : 이 페이지에서 Malvineous 의 답변을 보고 찬성하는 것을 고려 하십시오. 넷 마스크는 훨씬 더 우아한 솔루션입니다.


IP 주소에서 퍼센트 기호를 와일드 카드로 사용하면됩니다.

에서 http://dev.mysql.com/doc/refman/5.1/en/grant.html

호스트 이름에 와일드 카드를 지정할 수 있습니다. 예를 들어, user_name@'%.example.com'적용 user_name어떤 호스트 example.com도메인 및 user_name@'192.168.1.%'적용 user_name어떤 호스트 192.168.1클래스 C 서브넷.


답변

그것은 당신이 또한 넷 마스크를 사용할 수 있습니다처럼 보이는 , 예를 들어,

GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...


답변

다음과 같이 와일드 카드로 ‘%’를 사용합니다.

GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';


답변

mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';

와일드 카드 문자는 “*”대신 “%”입니다.


답변

내가 직면 한 특이성에 대한 메모 :
고려 :

db server:  192.168.0.101
web server: 192.168.0.102

mysql.user 'user'@'192.168.0.102'에 password1 로 정의 된 사용자 와 password2로 다른 사용자가있는 경우 'user'@'192.168.0.%',

그때,

password2를 사용하여 ‘user’로 웹 서버에서 db 서버에 연결하려고하면

단일 IP 'user'@'192.168.0.102'인증이 와일드 카드 'user'@'192.168.0.%'인증을 통해 사용 되기 때문에 ‘액세스 거부’오류가 발생 합니다.


답변

서버에 연결하고 호스트에 연결하려면 다음 단계를 수행해야합니다.

  1. 쓰기 mysql을 공개 MySQL의에
  2. 쓰다 ;GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect'
  3. Ctrl과 X를 눌러 mysql을 종료하십시오.
  4. 쓰다 nano /etc/mysql/my.cnf
  5. my.cnf 폴더에 bind-address = 127.0.0.1 전에 # 쓰기
  6. # bind-address = 127.0.0.1
  7. control + X로 my.cnf 폴더 저장
  8. 쓰다 service mysql restart
  9. 호스트에서 navicat을 통해 연결할 수 있습니다.


답변

@Malvineaus 답변에 동기를 부여하여 직접 시도했지만 저에게 효과가 없다는 것을 알았습니다.

‘192.168.1. %’또는 ‘192.168.1.0/255.255.255.0’으로 서브넷 마스크를 지정할 수 있지만 서브넷은 항상 완전한 옥텟에 있어야합니다. https://mariadb.com/kb/en/create-user/#host-name-component를 참조 하십시오 . 결과적으로 하나의 사양 방식과 다른 방식 간의 기능은 동일합니다.

예를 들어 ‘192.168.1.0/255.255.255.128’은 완전한 옥텟 경계에 있지 않기 때문에 작동하지 않습니다.