728x90
MySQL에서 원격 접속을 허용하는 방법
1. MySQL 서버 구성
MySQL 서버가 원격 접속을 수락하도록 구성해야 합니다. 이를 위해 MySQL 설정 파일을 수정해야 합니다. 설정 파일은 일반적으로 "/usr/local/mysql/my.cnf" 또는 "/etc/my.cnf"에 위치합니다.
아래와 같이 설정 파일을 열고 bind-address 옵션을 주석 처리 또는 수정하여 모든 IP 주소에서의 접속을 허용합니다.
# 기본적으로 MySQL은 로컬 호스트에서만 접속을 허용하도록 설정되어 있습니다.
# 다른 IP에서의 접속을 허용하려면 아래의 옵션을 변경합니다.
# bind-address = 127.0.0.1
# 모든 IP 주소에서의 접속을 허용합니다.
bind-address = 0.0.0.0
설정 파일을 수정한 후 MySQL 서버를 다시 시작합니다.
sudo systemctl restart mysql
2. MySQL 사용자에게 원격 접속 권한 부여
- 권한 확인
SELECT Host,User,plugin,authentication_string FROM mysql.user;
MariaDB [(none)]> SELECT Host,User,plugin,authentication_string FROM mysql.user;
+------------------+------------+--------+-----------------------+
| Host | User | plugin | authentication_string |
+------------------+------------+--------+-----------------------+
| localhost | root | | |
| 127.0.0.1 | root | | |
| ::1 | root | | |
| localhost | racktables | | |
+------------------+------------+--------+-----------------------+
4 rows in set (0.000 sec)
MariaDB [(none)]>
- 권한 설정(권한 부여)
- 특정 IP 대역, 특정 데이터베이스에 접근 허용
- 특정 IP 대역 : 192.168.0.0/24
- 특정 데이터베이스 : racktables_db
- GRANT ALL PRIVILEGES ON 데이터베이스.* TO 'mysql_계정'@'아이피' IDENTIFIED BY 'mysql_계정_패스워드';
- GRANT ALL PRIVILEGES ON *.* TO 'mysql_계정'@'%' IDENTIFIED BY 'mysql_계정_패스워드';
- * 참고로 %은 모든 아이피를 포함하지만, localhost는 포함하지 않는다.
- 특정 IP 대역, 특정 데이터베이스에 접근 허용
GRANT ALL PRIVILEGES ON racktables_db.* TO 'racktables'@'192.168.0.%' IDENTIFIED BY 'mysqlpassword!';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON racktables_db.* TO 'racktables'@'192.168.0.%' IDENTIFIED BY 'mysqlpassword!';
Query OK, 0 rows affected (0.000 sec)
- 권한 확인
SELECT Host,User,plugin,authentication_string FROM mysql.user;
MariaDB [(none)]> SELECT Host,User,plugin,authentication_string FROM mysql.user;
+------------------+------------+--------+-----------------------+
| Host | User | plugin | authentication_string |
+------------------+------------+--------+-----------------------+
| localhost | root | | |
| 127.0.0.1 | root | | |
| ::1 | root | | |
| localhost | racktables | | |
| 192.168.0.0/24 | racktables | | |
+------------------+------------+--------+-----------------------+
5 rows in set (0.000 sec)
MariaDB [(none)]>
FLUSH PRIVILEGES;
728x90
원격지에서 MySQL 서버에 접속하기
Mac 노트북에 mysql-client 설치하기
brew install mysql-client
> brew install mysql-client
...
==> mysql-client
mysql-client is keg-only, which means it was not symlinked into /opt/homebrew,
because it conflicts with mysql (which contains client libraries).
If you need to have mysql-client first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
For compilers to find mysql-client you may need to set:
export LDFLAGS="-L/opt/homebrew/opt/mysql-client/lib"
export CPPFLAGS="-I/opt/homebrew/opt/mysql-client/include"
For pkg-config to find mysql-client you may need to set:
export PKG_CONFIG_PATH="/opt/homebrew/opt/mysql-client/lib/pkgconfig"
echo 'export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
- 권한 삭제
DELETE FROM mysql.user WHERE Host='아이피' AND User='mysql_계정_패스워드';
DELETE FROM mysql.user WHERE Host='192.168.0.%' AND User='racktables';
MariaDB [(none)]> DELETE FROM mysql.user WHERE Host='192.168.0.%' AND User='racktables';
Query OK, 1 row affected (0.000 sec)
728x90
'리눅스' 카테고리의 다른 글
Well Known Ports (0) | 2022.11.28 |
---|---|
[리눅스] BIND(named)에서 $GENERATE 지시어를 사용하는 방법 (0) | 2022.11.28 |
[draft] CentOS 7에서 방화벽을 설정하는 방법 (0) | 2022.11.25 |
[draft] HTTP Status Codes (0) | 2022.11.25 |
HP 서버 스토리지 정보 확인(raid) (0) | 2022.11.25 |