sourcecode

임의의 IP 주소에서 MySQL 데이터베이스 원격 액세스 허용

copyscript 2022. 12. 6. 22:06
반응형

임의의 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;

주의:있는 는, 「」도열.「 」 「 」 「 」3306MySQL은 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

반응형