모든 IP 주소에서 MySQL 데이터베이스에 대한 원격 액세스 권한 부여
이 명령을 알고 있습니다.
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
그러나이 원격 MySQL 데이터베이스에 액세스하기 위해 특정 IP 주소 만 부여 할 수 있습니다. 원격 호스트가이 MySQL 데이터베이스에 액세스 할 수 있도록하려면 어떻게해야합니까? 어떻게해야합니까? 기본적으로 나는이 데이터베이스를 공개하여 모든 사람들이 액세스 할 수 있도록합니다.
TO 'user'@'%'
%는 와일드 카드 입니다. 필요한 경우 '%.domain.com'
또는 '%.123.123.123'
이와 같은 작업을 수행 할 수도 있습니다 .
원격 액세스 활성화 (Grant) 홈 / 자습서 / Mysql / 원격 액세스 활성화 (Grant) 원격 시스템에서 mysql 서버에 연결하려고 시도하고 아래와 같이 오류가 발생하면이 문서가 도움이됩니다.
오류 1130 (HY000) : '1.2.3.4'호스트는이 MySQL 서버에 연결할 수 없습니다
mysql 설정 변경
mysql 설정 파일 편집으로 시작
vim /etc/mysql/my.cnf
다음 줄을 주석으로 처리하십시오.
#bind-address = 127.0.0.1
#skip-networking
스킵 네트워킹 라인을 찾지 못하면 추가하고 주석 처리하십시오.
mysql 서버를 다시 시작하십시오.
~ /etc/init.d/mysql restart
GRANT 권한 변경
위의 변경 후에도 원격 액세스 권한을 얻지 못하지만 모든 데이터베이스에 액세스 할 수있는 것은 아닙니다.
기본적으로 사용중인 mysql 사용자 이름과 비밀번호는 로컬로 mysql-server에 액세스 할 수 있습니다. 따라서 권한을 업데이트해야합니다.
모든 머신에서 액세스하려면 아래와 같은 명령을 실행하십시오. (교체 USERNAME
및 PASSWORD
자격 증명에 의해.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
다음과 같은 명령을 실행하여 특정 IP에서 액세스하십시오. (교체 USERNAME
및 PASSWORD
자격 증명에 의해.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
1.2.3.4를 IP로 바꿀 수 있습니다. 위의 명령을 여러 번 실행하여 여러 IP의 액세스 권한을 부여 할 수 있습니다.
별도의 USERNAME
& PASSWORD
원격 액세스를 지정할 수도 있습니다.
다음을 통해 최종 결과를 확인할 수 있습니다.
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
마지막으로 다음을 실행해야 할 수도 있습니다.
mysql> FLUSH PRIVILEGES;
연결 테스트
터미널 / 명령 줄에서 :
mysql -h HOST -u USERNAME -pPASSWORD
mysql 쉘이 있다면 show 데이터베이스를 실행하는 것을 잊지 마십시오. 원격 컴퓨터에서 올바른 권한이 있는지 확인하십시오.
보너스 팁 : 액세스 취소
실수로 사용자에게 액세스 권한을 부여한 경우에는 취소 옵션이 더 좋습니다.
다음은 모든 컴퓨터에서 USERNAME에 대한 모든 옵션을 취소합니다.
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
REVOKE 명령을 실행 한 후 USAGE 권한이 표시되면 괜찮습니다. 전혀 특권이없는 것만 큼 좋습니다. 취소 할 수 있는지 확실하지 않습니다.
위 단계가 완료되었고 MySql 포트 3306에 원격으로 액세스 할 수 있다고 가정합니다. mysql 설정 파일에서 공개 IP 주소를 바인딩하는 것을 잊지 마십시오.
예를 들어 내 우분투 서버에서 :
#nano /etc/mysql/my.cnf
파일에서 [mysqld] 섹션 블록을 검색 하고 새 바인드 주소를 추가하십시오 (이 예에서는 192.168.0.116). 이런 식으로 보일 것입니다
......
.....
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
bind-address = 192.168.0.116
.....
......
원하는 경우 th localhost (127.0.0.1) 바인딩을 제거 할 수 있지만, 로컬 시스템의 서버에 액세스하려면 IP 주소를 지정해야합니다.
그런 다음 마지막 단계는 MySql 서버를 다시 시작하는 것입니다 (우분투에서)
stop mysql
start mysql
또는 #/etc/init.d/mysql restart
다른 시스템
이제 다음을 통해 MySQL 데이터베이스에 원격으로 액세스 할 수 있습니다.
mysql -u username -h 192.168.0.116 -p
이것으로 혼란스러워하는 사람이라면 여기에 내가 권한을 부여하는 방법이 있습니다. 누군가에게 도움이되기를 바랍니다.
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY
'yourRootPassword';
언급 된 바와 같이 %
와일드 카드이므로 모든 IP 주소를 데이터베이스에 연결할 수 있습니다. 내가 여기서 가정한다는 것은 당신이 연결할 때 root
(기본이지만) 사용자라는 이름을 갖게 될 것 입니다. 루트 암호를 입력하면 좋습니다. '
사용자 루트 주위에 작은 따옴표 ( ) 가 없습니다 .
로컬 호스트를 통한 연결을 활성화하려면 구성 파일을 변경해야합니다.
원격 IP를 통해 연결하려면 "루트"사용자로 로그인하여 mysql에서 아래 쿼리를 실행하십시오.
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;
원격 호스트뿐만 아니라 로컬 호스트에서도 액세스 할 수있는 새 사용자가 생성됩니다.
또한 /etc/mysql/my.cnf에있는 my.cnf 파일에서 아래 행을 주석으로 처리하십시오.
bind-address = 127.0.0.1
를 사용하여 mysql을 다시 시작하십시오.
sudo service mysql restart
이제 mysql에 원격으로 연결할 수 있습니다.
이 명령을 사용하십시오 :
GRANT ALL ON yourdatabasename.* TO root@'%' IDENTIFIED BY 'yourRootPassword';
그때:
FLUSH PRIVILEGES;
그런 다음 "/etc/mysql/mysql.conf.d/mysqld.cnf"파일에서 아래 행을 주석 처리하십시오 (필수)!
bind-address = 127.0.0.1
나를 위해 작동합니다!
다음을 실행하십시오.
$ mysql -u root -p
mysql> GRANT ALL ON *.* to root@'ipaddress' IDENTIFIED BY 'mysql root password';
mysql> FLUSH PRIVILEGES;
mysql> exit
그런 다음 지정한 IP 주소에서 연결을 시도하십시오.
mysql -h address-of-remove-server -u root -p
연결할 수 있어야합니다.
다음 명령을 통해 MariaDB의 문제를 해결할 수 있습니다 .
노트 :
GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'mysql root password';
%
와일드 카드입니다. 이 경우 모든 IP 주소를 나타냅니다.
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
모든 IP 주소에서 사용자와 연결할 수있게하려면 다음을 수행하십시오.
mysql 서버가 원격 연결을 수락하도록 허용하십시오. 이 열린 mysqld.conf 파일의 경우 :
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
"bind-address"로 시작하는 행을 검색하고 값을 0.0.0.0으로 설정하십시오.
bind-address = 0.0.0.0
마지막으로 파일을 저장하십시오.
이제 systemd
이전 service
명령을 사용하거나 이전 명령을 사용 하여 mysql 서버를 다시 시작하십시오 . 운영 체제에 따라 다릅니다.
sudo systemctl restart mysqld.service
마지막으로 mysql 서버는 이제 원격 연결을 수락 할 수 있습니다.
이제 사용자를 생성하고 권한을 부여해야하므로이 사용자로 원격으로 로그인 할 수 있습니다.
루트 또는 루트 권한을 가진 다른 사용자로 MySQL 데이터베이스에 연결하십시오.
mysql -u root -p
이제 localhost 및 '%'와일드 카드에서 원하는 사용자를 만들고 모든 DB에 대한 권한을 부여하십시오.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
그때,
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
마지막으로 권한을 플러시하는 것을 잊지 마십시오
FLUSH PRIVILEGES;
도움이 되었기를 바랍니다 ;)
- 관리자를 사용하여 MYSQL 시작
- mysql -u admin-user -p (비밀번호 입력 프롬프트)
- 새 사용자를 작성하십시오.
- 'password'로 식별 된 'newuser'@ '%'사용자 작성; (%-> 애니 호스트)
- 그랜트 특권 :
- db_name에서 GRANT 선택, 삭제, 삽입, 업데이트. * TO 'newuser'@ '%';
- 홍당무;
EC2 인스턴스를 실행중인 경우 MYSQL / Aurura를 사용하여 보안 그룹에 인바운드 규칙을 추가하는 것을 잊지 마십시오.
파일 편집 :
/etc/mysql/percona-server.cnf
아래 코드를 파일에 추가하십시오.
[mysqld] bind-address = 0.0.0.0
원격 액세스를위한 사용자를 작성하십시오.
$ mysql -u root -p
mysql> GRANT ALL ON *.* to snippetbucketdotcom@'%' IDENTIFIED BY 'tejastank';
mysql> FLUSH PRIVILEGES;
mysql> exit
모든 리눅스 서버가 작동합니다.
MSWin c : \ 위치 찾기 위치 \ 파일 경로
데이터베이스 MySQL 서버 8에 원격으로 액세스하려면 :
CREATE USER 'root'@'%' IDENTIFIED BY 'Pswword@123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
다음과 같은 데이터베이스에 사용자를 만드십시오.
GRANT ALL PRIVILEGES ON <database_name>.* TO '<username>'@'%' IDENTIFIED BY '<password>'
그런 다음
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
줄 bind-address = 127.0.0.1
을 다음으로 변경하십시오.bind-address = 0.0.0.0
그런 다음 모든 IP에서 해당 데이터베이스에 연결할 수 있습니다.
를 열고 mysql console
다음 명령을 실행하십시오 (데이터베이스 이름, 사용자 이름 및 비밀번호 입력).
yourdatabasename에 모두 부여하십시오. * 'yourRootPassword'에 의해 식별 된 admin @ '%';
그런 다음 다음을 실행하십시오.
홍당무;
명령 줄을 열고로 /etc/mysql/mysql.conf.d/mysqld.cnf
편집기를 사용 하여 파일 을 엽니 다 root privileges
.
예를 들면 다음과 같습니다.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
그런 다음 아래 줄을 주석으로 처리하십시오.
바인드 주소 = 127.0.0.1
명령을 사용하여 변경 사항을 반영하려면 mysql을 다시 시작하십시오.
sudo service mysql restart
즐겨 ;)
mysql 설정 파일을 변경해야합니다 :
mysql 설정 파일 편집으로 시작
vim /etc/mysql/my.cnf
더하다:
bind-address = 0.0.0.0
cPanel과 같은 웹 사이트 패널 %
에서 허용 된 호스트 이름에 단일 (백분율 부호)을 추가 하여 MySQL 데이터베이스에 액세스 할 수 있습니다.
싱글 %
을 추가하면 데스크탑 응용 프로그램에서도 모든 IP 또는 웹 사이트에서 데이터베이스에 액세스 할 수 있습니다.
예를 들어 CentOS에서
sudo gedit /etc/mysql/my.cnf
다음 줄을 주석으로 처리하십시오.
# 바인드 주소 = 127.0.0.1
그때
sudo 서비스 mysqld 재시작
모든 IP 주소에서 데이터베이스에 대한 원격 액세스 권한을 부여하려면 mysql 명령을 실행 한 후 다음 명령을 실행하십시오.
GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
Ubuntu에서 효과가 있었던 것은 사용자에게 모든 권한을 부여하는 것입니다.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
바인드 주소를 /etc/mysql/mysql.conf.d/mysqld.cnf
다음으로 설정하십시오 .
bind-address = 0.0.0.0
그런 다음 mysql 데몬을 다시 시작하십시오.
service mysql restart
/etc/my.cnf를 편집하여 모든 보안을 비활성화 할 수 있습니다 :
skip-grant-tables
'development' 카테고리의 다른 글
Argparse : '--help'에 기본값을 포함시키는 방법은 무엇입니까? (0) | 2020.04.01 |
---|---|
git repo의 크기 찾기 (0) | 2020.04.01 |
jQuery에 속성 추가 (0) | 2020.04.01 |
DateTime "널"값 (0) | 2020.04.01 |
두 날짜 사이의 일 수를 계산하는 방법은 무엇입니까? (0) | 2020.04.01 |