programing

사용자의 mysql 서버에 원격 액세스 권한을 부여하는 방법

itsource 2022. 11. 23. 20:32
반응형

사용자의 mysql 서버에 원격 액세스 권한을 부여하는 방법

SHOW GRANTS에서는 getmysql을합니다.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' 
    IDENTIFIED BY PASSWORD 'some_characters' 
    WITH GRANT OPTION

가가면면면 면면면 면면 면면 면면면root@localhost가 사용한다는 입니다.root는 서버에 할 수 있는 것은, 「이러다」, 「이러다」입니다.localhost에 MySQL을 해야 하나요?root(같은 네트워크 내의) 다른 모든 머신에서 이 mysql 서버에 액세스할 수 있는 권한도 있습니까?

, 「」의 어느 머신으로부터도 루트 됩니다.*.example.com:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com' 
    IDENTIFIED BY 'some_characters' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

이름 해결이 기능하지 않는 경우는, IP 또는 서브넷에 의한 액세스를 허가할 수도 있습니다.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
    IDENTIFIED BY 'some_characters'  
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

MySQLGRANT를 참조해 주세요.

시험:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;

처음에 mysql을 실행하고 다음으로 외부에서 root 사용자에 액세스할 수 있도록 몇 가지 절차를 수행해야 합니다.

  1. 「」를 무효로 .skip-networkingmy.cnf (예:/etc/mysql/my.cnf)

  2. 값 of의 합니다.bind-addressmy.cnf 」로 되어 있는 127.0.0.1 이렇게 수 0.0.0.0「IP」IP를 사용

  3. "IP"가 ""를 한다).%)

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
        IDENTIFIED BY 'your_root_password'
        WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  4. mysql 서비스 재시작:

    sudo service mysql restart
    
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' 
    IDENTIFIED BY 'YOUR_PASS' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;  

*.* = DB.TABLE사용자를 특정 데이터베이스 및 특정 테이블로 제한할 수 있습니다.

'root'@'%'작성한 임의의 사용자와 루트를 변경할 수 있으며 %는 모든 IP를 허용합니다.1.1을 변경하여 할 수 .%.168.1.1.1로 변경해도 됩니다.


그래도 해결되지 않으면 my.cnf 또는 my.ini도 수정하고 다음 행에 코멘트를 추가합니다.

bind-address = 127.0.0.1로로 합니다.#bind-address = 127.0.0.1
...
skip-networking로로 합니다.#skip-networking

  • MySQL을 재시작하고 위의 단계를 다시 반복합니다.

Pi, Rasberry Pi 아래에 bind-address 설정이 .\etc\mysql\mariadb.conf.d\50-server.cnf

mysql 8 이후 버전에서는 권한을 부여하여 사용자를 추가할 수 없습니다.이 쿼리는 다음을 의미합니다.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' 
    IDENTIFIED BY 'type-root-password-here' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

mysql은 다음 오류를 반환합니다.

ERROR 1064(42000):SQL 구문에 오류가 있습니다. MySQL Server 버전에 해당하는 설명서에서 1행의 'IDENTIFIDED BY 'writted password' 근처에서 사용할 올바른 구문을 확인하십시오.

이는 % 도메인의 루트 사용자가 없음을 의미합니다.따라서 먼저 사용자를 삽입한 후 다음과 같은 권한을 부여해야 합니다.

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'your password';
Query OK, 0 rows affected (0.11 sec)

mysql> GRANT ALL ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.15 sec)

mysql> FLUSH PRIVILEGES;

패스워드를 특정 패스워드로 치환하는 것을 잊지 말아주세요.

다른 사람들이 공유하고 있는 SQL 인가는 작동해야 합니다.그래도 데이터베이스에 액세스할 수 없는 경우 포트에 방화벽 제한이 있을 수 있습니다.접속의 오픈 방법에 대해서는, 서버 타입(및 그 사이에 있는 라우터)에 의해서 다릅니다.인바운드 TCP 포트 3306을 열고 외부 머신(all/subnet/single IP 등)에 대해 동일한 액세스 규칙을 지정합니다.

2단계:

  1. 와일드카드를 사용하여 사용자 설정:
    create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION

  2. vim /etc/my.cnf
    다음을 추가합니다.
    bind-address=0.0.0.0

서버를 재기동하면, 접속에 문제가 없습니다.

를 엽니다./etc/mysql/mysql.conf.d/mysqld.cnf다음 행을 파일화하여 코멘트합니다.

#bind-address = 127.0.0.1

제 경우 cent OS의 리모트 mysql 서버에 접속하려고 했습니다.많은 해결 방법(모든 권한 부여, IP 바인딩 삭제, 네트워킹 활성화)을 사용해도 해결되지 않았습니다.

알고 보니 다양한 솔루션을 조사하던 중 iptables를 발견했는데 mysql 포트 3306이 접속을 받아들이지 않는다는 것을 알게 되었습니다.

다음은 이 문제를 확인하고 해결한 방법에 대한 간단한 메모입니다.

  • 포트가 연결을 허용하는지 확인하는 중:
telnet(mysql 서버 IP) [portNo]

- 포트에서 연결을 허용하는 ip 테이블 규칙 추가:

iptables - A INPUT - ieth0 -p tcp -m tcp --dport 3306 -j ACCEPT

프로덕션 환경에서는 권장하지 않지만 iptables가 올바르게 구성되어 있지 않은 경우 규칙을 추가해도 문제가 해결되지 않을 수 있습니다.이 경우 다음 작업을 수행해야 합니다.

서비스 iptables 중지

이게 도움이 됐으면 좋겠다.

우분투 18.04

설치 및 실행 중인지 확인합니다.

데이터베이스로 이동하여 root 사용자를 설정합니다.

sudo mysql -u root
SELECT User,Host FROM mysql.user;
DROP USER 'root'@'localhost';
CREATE USER 'root'@'%' IDENTIFIED BY 'obamathelongleggedmacdaddy';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

mysqld 권한을 편집하고 다시 시작합니다.

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

# edit the line to be this:
bind-address=0.0.0.0

sudo systemctl stop mysql
sudo systemctl start mysql

다른 기계에서 테스트..mysqld 시스템의 Obvs 포트(3306)는 테스트 시스템에서 연결을 허용해야 합니다.

mysql -u root -p -h 123.456.789.666

MySql의 모든 추가 "보안"은 보안에 전혀 도움이 되지 않습니다. 단지 복잡해지고 난독화될 뿐입니다. 아주 긴 암호를 사용하던 예전보다 실제로 더 쉽게 망칠 수 있습니다.

이건 나한테 효과가 있었어.그런데 이상한 문제가 하나 있어서 내가 먼저 시도해보았는데 영향을 받지 않았다.phpmyadmin 페이지를 업데이트하여 어떻게든 동작하게 되었습니다.

local-xampp-mysql 에 액세스 할 필요가 있는 경우.xampp-shell -> opening 명령 프롬프트로 이동할 수 있습니다.

그런 다음 mysql -uroot -p --port=3306 또는 mysql -uroot -p(비밀번호가 설정되어 있는 경우)를 입력합니다.그런 다음 mysql 셸 페이지에서 이러한 액세스를 허용할 수 있습니다(localhost/phpmyadmin에서도 작업할 수 있습니다).

누군가 이 주제를 발견하고 초심자에게 문제가 생겼을 때 이것들을 추가해 주세요.

언급URL : https://stackoverflow.com/questions/6239131/how-to-grant-remote-access-permissions-to-mysql-server-for-user

반응형