.env
· 72 B · Bash
Originalformat
MYSQL_USER=user
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=rootpassword
| 1 | MYSQL_USER=user |
| 2 | MYSQL_PASSWORD=password |
| 3 | MYSQL_ROOT_PASSWORD=rootpassword |
README.md
· 565 B · Markdown
Originalformat
| 變數 | 作用 | 預設值 |
| --------------------- | ---------------- | -------------- |
| `MYSQL_DATABASE` | 預設建立的資料庫 | `myapp` |
| `MYSQL_USER` | 普通使用者帳號 | `user` |
| `MYSQL_PASSWORD` | 普通使用者密碼 | `password` |
| `MYSQL_ROOT_PASSWORD` | Root 使用者密碼 | `rootpassword` |
```bash
docker exec -it mysql-container mysql -uroot -p
```
```sql
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';
```
| 變數 | 作用 | 預設值 |
|---|---|---|
MYSQL_DATABASE |
預設建立的資料庫 | myapp |
MYSQL_USER |
普通使用者帳號 | user |
MYSQL_PASSWORD |
普通使用者密碼 | password |
MYSQL_ROOT_PASSWORD |
Root 使用者密碼 | rootpassword |
docker exec -it mysql-container mysql -uroot -p
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';
docker-compose.yml
· 389 B · YAML
Originalformat
services:
mysql:
container_name: mysql-container
image: mysql:8.0
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: myapp
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- ./mysql_data:/var/lib/mysql
- ./mysql_data/my.cnf:/etc/mysql/my.cnf
restart: always
| 1 | services: |
| 2 | mysql: |
| 3 | container_name: mysql-container |
| 4 | image: mysql:8.0 |
| 5 | ports: |
| 6 | - "3306:3306" |
| 7 | environment: |
| 8 | MYSQL_DATABASE: myapp |
| 9 | MYSQL_USER: ${MYSQL_USER} |
| 10 | MYSQL_PASSWORD: ${MYSQL_PASSWORD} |
| 11 | MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} |
| 12 | volumes: |
| 13 | - ./mysql_data:/var/lib/mysql |
| 14 | - ./mysql_data/my.cnf:/etc/mysql/my.cnf |
| 15 | restart: always |
| 16 |
my.cnf
· 1.2 KiB · Text
Originalformat
# ./mysql_data/my.cnf
[mysqld]
# 最大連線數:如果硬體夠強,可以考慮提高,不過 150 是個穩妥的選擇
max_connections = 150
# 表快取:如果資料表很多,可以稍微調高這個值,同時記得調整 open_files_limit
table_open_cache = 500
# InnoDB 緩衝池:建議設成可用記憶體的 70-80%,記憶體夠用的話可以再調高
innodb_buffer_pool_size = 512M
# Redo 日誌容量:256M 對於寫入量中等或較高的環境通常夠用,如果寫入特別多可考慮調高
innodb_redo_log_capacity = 256M
# 日誌同步:1 能確保資料安全(ACID),但效能會稍微受影響;如果可以接受風險,調成 2 也行
innodb_flush_log_at_trx_commit = 1
# binlog 同步:設成 1 可以確保 binlog 跟資料庫保持一致,除非追求極致效能,否則建議用 1
sync_binlog = 1
# 關於儲存過程和觸發器:這樣設定可以避免一些權限上的麻煩
log_bin_trust_function_creators = 1
# 認證機制:為了相容舊版用戶端,用這個方式不錯,但長遠來看建議跟進預設設定
authentication_policy = 'mysql_native_password'
# 關閉 DNS 解析:這樣可以讓連線更快些
skip-name-resolve
| 1 | # ./mysql_data/my.cnf |
| 2 | |
| 3 | [mysqld] |
| 4 | # 最大連線數:如果硬體夠強,可以考慮提高,不過 150 是個穩妥的選擇 |
| 5 | max_connections = 150 |
| 6 | |
| 7 | # 表快取:如果資料表很多,可以稍微調高這個值,同時記得調整 open_files_limit |
| 8 | table_open_cache = 500 |
| 9 | |
| 10 | # InnoDB 緩衝池:建議設成可用記憶體的 70-80%,記憶體夠用的話可以再調高 |
| 11 | innodb_buffer_pool_size = 512M |
| 12 | |
| 13 | # Redo 日誌容量:256M 對於寫入量中等或較高的環境通常夠用,如果寫入特別多可考慮調高 |
| 14 | innodb_redo_log_capacity = 256M |
| 15 | |
| 16 | # 日誌同步:1 能確保資料安全(ACID),但效能會稍微受影響;如果可以接受風險,調成 2 也行 |
| 17 | innodb_flush_log_at_trx_commit = 1 |
| 18 | |
| 19 | # binlog 同步:設成 1 可以確保 binlog 跟資料庫保持一致,除非追求極致效能,否則建議用 1 |
| 20 | sync_binlog = 1 |
| 21 | |
| 22 | # 關於儲存過程和觸發器:這樣設定可以避免一些權限上的麻煩 |
| 23 | log_bin_trust_function_creators = 1 |
| 24 | |
| 25 | # 認證機制:為了相容舊版用戶端,用這個方式不錯,但長遠來看建議跟進預設設定 |
| 26 | authentication_policy = 'mysql_native_password' |
| 27 | |
| 28 | # 關閉 DNS 解析:這樣可以讓連線更快些 |
| 29 | skip-name-resolve |
| 30 |
mysql_database_table_info.sql
· 227 B · MySQL
Originalformat
SELECT TABLE_SCHEMA AS DATABASE_NAME,
TABLE_NAME,
TABLE_ROWS AS RECORDS,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB
FROM INFORMATION_SCHEMA.TABLES
ORDER BY DATABASE_NAME, SIZE_MB DESC;
| 1 | SELECT TABLE_SCHEMA AS DATABASE_NAME, |
| 2 | TABLE_NAME, |
| 3 | TABLE_ROWS AS RECORDS, |
| 4 | ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB |
| 5 | FROM INFORMATION_SCHEMA.TABLES |
| 6 | ORDER BY DATABASE_NAME, SIZE_MB DESC; |
| 7 |