이 코드를 사용하여 하나의 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.%'
인증을 통해 사용 되기 때문에 ‘액세스 거부’오류가 발생 합니다.
답변
서버에 연결하고 호스트에 연결하려면 다음 단계를 수행해야합니다.
- 쓰기 mysql을 공개 MySQL의에
- 쓰다 ;
GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect'
- Ctrl과 X를 눌러 mysql을 종료하십시오.
- 쓰다
nano /etc/mysql/my.cnf
- my.cnf 폴더에 bind-address = 127.0.0.1 전에 # 쓰기
- # bind-address = 127.0.0.1
- control + X로 my.cnf 폴더 저장
- 쓰다
service mysql restart
- 호스트에서 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’은 완전한 옥텟 경계에 있지 않기 때문에 작동하지 않습니다.