公司內(nèi)部會(huì)上辆床,他們提了一句這個(gè)方式愿卸,之前沒遇到過灵临,然后就自己嘗試嘗試。
環(huán)境
docker pull mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=MYSQL mysql
docker run -d -p 3333:3306 -e MYSQL_ROOT_PASSWORD=123456 --name=MYSQL_TOOLS mysql
現(xiàn)場
? ~ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1827df0687ef mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 33060/tcp, 0.0.0.0:3333->3306/tcp MYSQL_TOOLS
9e6dcb05c8fb mysql:latest "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:3306->3306/tcp, 33060/tcp MYSQL
素材
登錄到MYSQL 上趴荸,隨便搞點(diǎn)數(shù)據(jù)儒溉。
? ~ docker exec -it 9e6d /bin/bash
root@9e6dcb05c8fb:/# mysql --version
mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)
root@9e6dcb05c8fb:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 8.0.16 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-------------------+
| Tables_in_test |
+-------------------+
| account |
| lottery_statistic |
| t1 |
+-------------------+
3 rows in set (0.00 sec)
mysql>
測試
目標(biāo)是測試socket文件的方式進(jìn)行登錄,所以先要知道下面內(nèi)容:
- socket文件的位置
- 本地測試发钝,以及遠(yuǎn)程測試
這就涉及到查看mysql的配置文件查看顿涣,以及容器運(yùn)行的IP等信息。從“現(xiàn)場”部分可以查看到對(duì)應(yīng)容器的id信息酝豪。
查看配置文件
root@9e6dcb05c8fb:/# tail /etc/mysql/my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
查看容器IP等信息
? ~ docker inspect 9e| grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAMConfig": null,
"IPAddress": "172.17.0.2",
? ~
本地登陸測試
按場景來看涛碑,本地登陸測試沒有意義,但是還是來試一下孵淘。
? ~ docker exec -it 9e /bin/bash
root@9e6dcb05c8fb:/# mysql -S /var/run/mysqld/mysqld.sock -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 8.0.16 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.01 sec)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-------------------+
| Tables_in_test |
+-------------------+
| account |
| lottery_statistic |
| t1 |
+-------------------+
3 rows in set (0.00 sec)
mysql>
遠(yuǎn)程登陸測試
? ~ docker exec -it 182 /bin/bash
root@1827df0687ef:/# mysql -h 172.17.0.2 -S /var/run/mysqld/mysqld.sock -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 8.0.16 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
5 rows in set (0.01 sec)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-------------------+
| Tables_in_test |
+-------------------+
| account |
| lottery_statistic |
| t1 |
+-------------------+
3 rows in set (0.00 sec)
mysql>
整理
mysql竟然還可以以socket文件的形式進(jìn)行登錄蒲障,我竟然才知道。仔細(xì)想想瘫证,php-fpm不也類似的嗎揉阎?socket文件以及ip+端口格式兩種被NGINX使用。
不過還不晚背捌,親身測試過后毙籽,socket文件登錄可以在一定程度上脫敏,是一個(gè)不錯(cuò)的選擇毡庆。