임의의 IP 주소에서 MySQL 데이터베이스 원격 액세스 허용
다음 명령어를 알고 있습니다.
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
그러나 이 경우 특정 IP 주소만 허용하여 이 원격 MySQL 데이터베이스에 액세스할 수 있습니다.원격 호스트가 이 MySQL 데이터베이스에 액세스할 수 있도록 하려면 어떻게 해야 합니까?그걸 어떻게 하는 거죠?기본적으로 모든 사람이 접근할 수 있도록 이 데이터베이스를 공개합니다.
TO 'user'@'%'
입니다.%를 사용할 수도 .하다'%.domain.example'
★★★★★★★★★★★★★★★★★」'%.123.123.123'
이데올로기 때문에
Enable Remote Access (Grant) Home / Tutorials / Mysql / Enable Remote Access (Grant )리모트 머신에서 mysql 서버에 접속하려고 할 때 다음과 같은 오류가 발생하면 이 문서를 참조하십시오.
ERROR 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에 로컬로 액세스할 수 있습니다. 싶은 )를 사용할 수 있습니다.CREATE USER 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';
)
과 하여 모든하십시오).USERNAME
★★★★★★★★★★★★★★★★★」PASSWORD
★★★★★★★★★★★★★★★★★★★★★」
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
명령을 IP에서 수 있도록 > > > > > 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 databases를 실행하는 것을 잊지 마십시오.리모트 머신에서 적절한 권한이 있는지 확인합니다.
보너스 팁: 액세스 취소
실수로 사용자에게 액세스 권한을 부여한 경우 해지 옵션을 사용하는 것이 좋습니다.
다음에 따라 모든 기계에서 사용자 이름에 대한 모든 옵션이 취소됩니다.
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 명령어를 실행한 후 USE 특권이 표시되면 문제 없습니다.그것은 전혀 특권이 없는 것과 같다.나는 그것이 취소될 수 있을지 확신할 수 없다.
임의의 IP 주소로부터 유저와 접속하려면 , 다음의 순서에 따릅니다.
mysql 서버가 원격 연결을 수락할 수 있도록 허용합니다.이 경우 mysqld.conf 파일을 엽니다.
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address로 시작하는 행을 검색하여 값을 0.0.0으로 설정합니다.
bind-address = 0.0.0.0
마지막으로 파일을 저장합니다.
8+ 를 하고 있는는, 「MySQL 8+」를 .bind-address
는 이 명령어에 .mysqld.cnf
일을만만 만만만다다 파일 합니다./etc/mysql/mysql.conf.d/mysqld.cnf
.
서버를 합니다.mysql은 "Da" " 서버를합니다.systemd
옛날 것을 요.service
명령어를 입력합니다.operminating system
sudo systemctl restart mysql # for ubuntu
sudo systemctl restart mysqld.service # for debian
마지막으로 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;
주의:있는 는, 「」도열.「 」 「 」 「 」3306
MySQL은 MySQL을 사용합니다.
이것이 도움이 되길 바란다;)
위의 절차가 완료되어 MySql 포트 3306에 원격으로 액세스할 수 있다고 가정하면 mysql 구성 파일에서 퍼블릭 IP 주소를 바인딩하는 것을 잊지 마십시오.
예를 들어 ubuntu 서버:
#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
.....
......
필요에 따라 localhost(127.0.0.1) 바인딩을 삭제할 수 있지만 로컬머신상의 서버에 액세스 하려면 , IP 주소를 지정할 필요가 있습니다.
마지막 단계는 MySql 서버를 (ubuntu에서) 재시작하는 것입니다.
stop mysql
start mysql
★★★★★★★★★★★★★★★★★」#/etc/init.d/mysql restart
이제 MySQL 데이터베이스에 원격으로 액세스할 수 있습니다.
mysql -u username -h 192.168.0.116 -p
localhost 경유 연결을 활성화하려면 구성 파일을 변경해야 합니다.
원격 IP를 통해 연결하려면 "root" 사용자로 로그인하고 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;
이를 통해 원격 IP뿐만 아니라 로컬 호스트에서도 액세스할 수 있는 새 사용자가 생성됩니다.
또한 /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';
전술한 바와 같이%
는 와일드카드이며, 임의의 IP 주소를 데이터베이스에 접속할 수 있습니다.여기서 상정하고 있는 것은, 접속하면, 다음과 같은 이름의 유저가 되는 것입니다.root
(이것은 디폴트입니다).root 비밀번호를 입력하면 바로 사용할 수 있습니다.견적서는 1개도 없습니다.('
)을 클릭합니다.
다음 명령을 사용합니다.
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 주소를 참조합니다.
데이터베이스 Mysql 서버8 에 리모트로 액세스 하려면 , 다음의 순서에 따릅니다.
CREATE USER 'root'@'%' IDENTIFIED BY 'Pswword@123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
- 관리자 사용자를 사용하여 MYSQL 시작
- mysql - u admin-user -p (프롬프트에 비밀번호를 입력)
- 새 사용자 만들기:
- 비밀번호로 식별되는 사용자 'newuser'@% 생성; (% -> anyhost)
- 권한 부여:
- GRANT SELECT,INSERT,UPDATE ON db_name.* 'newuser'@%에게;
- 플래시 특권
EC2 인스턴스를 실행하는 경우 MYSQL/Aurura를 사용하여 보안 그룹에 인바운드 규칙을 추가하는 것을 잊지 마십시오.
파일 편집:
/etc/cnf/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
모든 Linux 서버는 동작합니다.
MSWin c:\ 설치 위치 찾기\ 파일 경로
다음과 같은 데이터베이스에 사용자를 생성하기만 하면 됩니다.
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
다음 명령어를 실행합니다(데이터베이스명, 비밀번호 입력).
모든 것을 당신의 databasname에 부여합니다.* "your Root Password"로 식별되는 "관리자 @%";
다음으로 실행:
플래시 특권
명령줄을 열고 파일을 엽니다./etc/mysql/mysql.conf.d/mysqld.cnf
에서 편집자 사용root privileges
.
예를 들어 다음과 같습니다.
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
그런 다음 다음 다음 행을 코멘트합니다.
bind-address = 127.0.0.1
다음 명령을 사용하여 변경을 반영하려면 mysql을 재시작합니다.
sudo service mysql restart
즐기세요;)
mysql 설정 파일을 변경해야 합니다.
mysql 구성 파일 편집부터 시작합니다.
vim /etc/mysql/my.cnf
추가:
bind-address = 0.0.0.0
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/mysql/mysql.conf.d"로 이동하여 이 파일 "mysqld.cnf"를 편집합니다.
$nano mysqld.cnf
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
으로 편집하다.
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
등의 웹 cPanel을 할 수 .%
MySQL 데이터베이스에 액세스하기 위해 허용된 호스트 이름(백분율 기호)을 지정합니다.
의 「」를 .%
데스크탑 애플리케이션에서도, 임의의 IP나 Web 사이트에서 데이타베이스에 액세스 할 수 있습니다.
예를 들어 my Cent에OS
sudo gedit /etc/my.cnf
다음 행을 코멘트하다
#syslog-address = 127.0.0.1
그리고나서
sudo 서비스 mysqld 재시작
임의의 IP 주소에서 데이터베이스의 리모트액세스를 허가하려면 mysql 명령을 실행하고 그 후에 다음 명령을 실행합니다.
GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%'
IDENTIFIED BY 'password'
WITH GRANT OPTION;
많은 답변이 있는 것 같습니다만, 받아들여진 답변 이외에는 상당히 긴 답변으로, 매우 짧고 설명이 부족한 답변입니다.편집할 수 없기 때문에 답변을 추가합니다.Adit의 질문:
이 데이터베이스를 공개하여 모든 사용자가 접근할 수 있도록 합니다.
GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'remote_host'
IDENTIFIED BY 'password';
로부터 유저에게 하고 있는 는, 가 「MySQL」를 해, 할 수 .TO 'username'@'yourremotehost'
로로 합니다.TO 'username'@'%'
.
따라서 사용자에게 임의의 리모트호스트에서 접속할 수 있는 권한을 부여하기 위한 수정 쿼리는 다음과 같습니다.
GRANT ALL PRIVILEGES
ON database.*
TO 'username'@'%'
IDENTIFIED BY 'password';
/etc/my.cnf를 편집하여 모든 보안을 해제할 수 있습니다.
skip-grant-tables
언급URL : https://stackoverflow.com/questions/8348506/grant-remote-access-of-mysql-database-from-any-ip-address
'sourcecode' 카테고리의 다른 글
__all_은 Python에서 무엇을 의미합니까? (0) | 2022.12.06 |
---|---|
문자열의 MYSQL ORDER BY 번호 (0) | 2022.12.06 |
다른 문자열의 x 위치에 문자열 삽입 (0) | 2022.12.06 |
MySQL my.ini 위치 (0) | 2022.12.06 |
JavaScript를 사용하여 문자열에서 공백을 제외한 모든 특수 문자 제거 (0) | 2022.12.06 |