一、环境
系统:Ubuntu 22.04.1 LTS
二、基础软件安装(如果已安装则忽略)
# 更新源
apt update
# 安装mysql-server,此命令也会把mysql-client也给安装了
apt install mysql-server -y
# 安装docker
apt install docker.io -y
# 安装docker-compose
apt install docker-compose
三、构建mysql 容器的docker-compose.yml
1、拉取mysql镜像
# 搜索mysql镜像
docker search mysql
# 从搜索结果选择mysql这个镜像
docker pull mysql
2、配置mysql.cnf
# 新建mysql文件夹并在mysql下新建config文件夹
cd /var
mkdir mysql
chmod -R 777 /var/mysql
cd /var/mysql
mkdir config
3、创建my.cnf文件:vim /var/mysql/config/my.cnf
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = utf8
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
#user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /mysql
tmpdir = /tmp
lc_messages_dir = /usr/share/mysql
lc_messages = en_US
skip-external-locking
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
# * Fine Tuning
#
max_connections = 800
connect_timeout = 10
wait_timeout = 6000
max_allowed_packet = 16M
thread_cache_size = 256
sort_buffer_size = 4M
bulk_insert_buffer_size = 16M
tmp_table_size = 128M
max_heap_table_size = 128M
# * MyISAM
#
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched. On error, make copy and try a repair.
myisam_recover_options = BACKUP
key_buffer_size = 128M
#open-files-limit = 2000
table_open_cache = 400
myisam_sort_buffer_size = 512M
concurrent_insert = 2
read_buffer_size = 2M
read_rnd_buffer_size = 1M
# * Query Cache Configuration
#
# Cache only tiny result sets, so we can fit more in the query cache.
query_cache_limit = 128K
query_cache_size = 64M
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 10
expire_logs_days = 10
max_binlog_size = 100M
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
default_storage_engine = InnoDB
innodb_buffer_pool_size = 4G
innodb_log_buffer_size = 8M
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 400
innodb_flush_method = O_DIRECT
[mysqldump]
quick
quote-names
max_allowed_packet = 128M
[mysql]
default-character-set = utf8
[isamchk]
key_buffer = 16M
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!include /etc/mysql/mariadb.cnf
!includedir /etc/mysql/conf.d/
4、构建docker-compose.yml
version: '3'
services:
database:
image: mysql
container_name: mysql
restart: always
ports:
- 3306:3306
volumes:
- /var/mysql:/var/mysql
- /var/mysql/config/my.cnf:/etc/mysql/conf.d/mysql.cnf
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=123456
5、启动容器: docker-compose up -d
四、进入mysql容器创建用户、设置用户权限、创建数据库
1、进入mysql 容器,并以root角色登录mysql
# 进入 mysql 容器
docker exec -it mysql bash
# 以root 登录mysql
mysql -uroot -p
输入任意密码
2、给root赋以全部权限
use mysql;
select Host, user from user;
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
3、创建一个新数据库和一个新的用户
注:此步骤是为了 后续搭建sonic云真机平台准备
# 创建数据库sonic
create database sonic character set utf8 collate utf8_general_ci
# 创建用户sonic
create user sonic identified by 'sonic';
grant all on *.* to 'sonic'@'%';
flush privileges;