docker 安装 mysql
查看所有运行或者不运行容器
docker ps -a
查看服务状态
端口是否打开
lsof -i:3306
mysqld服务是否正在运行
service mysqld status
如果mariaDB,同样方法查服务是否正在运行:
service mariadb status
停止、启动、杀死、重启一个容器
docker stop Name或者ID
docker start Name或者ID
docker kill Name或者ID
docker restart name或者ID
删除所有停止的容器
docker container prune
查看当前有些什么images
docker images
删除images
docker rmi <image id>
删除所有不使用的镜像
docker image prune --force --all或者docker image prune -f -a
查找 docker mysql
docker search mysql
安装mysql
# 创建文件夹
mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
# 安装
sudo docker run -p 3306:3306 --name mf-mysql -v $PWD/mysql/conf:/etc/mysql/conf.d -v $PWD/mysql/logs:/logs -v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
使用docker run 时设置资源限制
我们在使用docker run的时候可以直接设置资源限制。
1 内存
假如我们希望容器的内存最多只使用512M。 我们通过 --memory 或 -m 参数设置内存限制。 参数后面跟一个数字,单位可以是b、 k、 m 或者 g, 最小值是 4M。
sudo docker run -m 512m nginx
我们也可以设置一个保留内存(memory reservation)。 这个值要小于--memory值。当docker检测到宿主机上内存较少的或存在内存竞争(memory contention)时才会启用该限制。但是因为是软限制,所以无法保证docker容器不超出这个限制。
sudo docker run -m 512m --memory-reservation=256m nginx
2. CPU
默认情况下,CPU的算力是不受限制的。我们可以通过cpus参数设置CPU限制。例如,我们限制容器最多使用两个CPU:
sudo docker run --cpus=2 ngin
我们也可以指定CPU分配的优先级。默认优先级是1024, 更高的数值的优先级更高:
sudo docker run --cpus=2 ngin
验证资源使用
在我们设置过资源限制之后,我们可以通过docker stats 命令来验证设置是否生效。
$ sudo docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
8ad2f2c17078 bael_st 0.00% 2.578MiB / 512MiB 0.50% 936B / 0B
登录 mysql
sudo docker exec -it mf-mysql bash
# 连接到mysql容器
mysql -u root -p
port is already allocated
查看进程,发现相关的容器并没有在运行,而 docker-proxy 却依然绑定着端口:
sudo docker ps
ps -aux | grep -v grep | grep docker-proxy
删除所有容器,停止 doker 进程,然后删除 local-kv.db 这个文件,再启动 docker
docker rm $(docker ps -aq)
sudo service docker stop
sudo rm /var/lib/docker/network/files/local-kv.db
sudo service docker start
授权远程登录
use mysql;
select user,host from user;
/*修改库中user表中,user用户的host=%(任意连接)*/
update user set host='%' where user ='root';
/*重新加载权限表*/
flush privileges;
/*给root用户赋予远程连接权限*/
grant all privileges on *.* to 'root'@'%' with grant option;
mysql -h 3.91.56.137 -P 3306 -u root -p123456
MySQL8和5的密码加密方式不同,mysql_native_password是5的加密方式。mysql已经将之前的mysql_native_password认证,修改成了caching_sha2_password认证方式。所以,使用类似于navicat或是sqlyog这些客户端时,默认使用还是mysql_native_password认证方式,所以即使输入正确的用户和密码依然登录不成功。
创建数据库
create database MFEfficiency character set utf8;
AWS Mysql 端口开放
如果是在 AWS 上搭建的 Mysql,直接 ping 和 telnet 端口都是不通的。要远程连接,需要在 EC2 的控制台设置安全组策略:
安全组策略设置步骤:
1.控制台-->2.网络与安全-->3.安全组-->4.入站规则

参考: