网上创建容器的命令有点点小问题,为避免以后到处找命令,所以写一个备忘录记一下
MySQL 1 2 3 4 5 6 7 8 9 10 11 docker run --name mysql \ -v /home/docker/mysql/log:/var/log/mysql \ -v /home/docker/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql/ \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:latest \ --init-connect="SET collation_connection=utf8mb4_0900_ai_ci" \ --init-connect="SET NAMES utf8mb4" \ --default-authentication-plugin=mysql_native_password --skip-character-set-client-handshake
当然也可以写好配置文件后,使用配置文件方式进行启动
配置文件:
1 2 3 4 init-connect="SET collation_connection=utf8mb4_0900_ai_ci" init_connect="SET NAMES utf8mb4" skip-character-set-client-handshake default_authentication_plugin=mysql_native_password
创建命令:
1 2 3 4 5 6 7 docker run --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql/conf.d \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=密码 \ -d mysql
需要注意,创建的MySQL容器可能会有一个问题,因为没有给外部连接的权限,所以你可能需要做如下更改:
1 2 3 4 docker exec -it mysql /bin/bash # 进入MySQL容器 mysql -uroot -p{密码} # 这里有可能设置的密码也没有生效,可以-p后直接回车
1 2 3 4 5 use mysql; select host,user,plugin,authentication_string from user; #查看一下root的host列是否为%,如果不是使用以下命令修改 update user set host=‘%’ where user=‘root’; #修改成运行外网连接 flush privileges; #刷新权限
需要注意!!plugin是加密的方式,在MySQL8中默认加密方式为caching_sha2_password,此时数据库软件默认的连接使用的是mysql_native_password,所以需要修改加密方式。
在这个地方被坑了很久,已经修改了创建命令,建议还是检查一遍以防被坑。
1 2 use mysql; alter user 'root'@'%' identified with mysql_native_password by '密码';
这样就可以正常使用MySQL了。
Redies 要记得先创建配置文件和数据存放地址
1 2 mkdir -p /home/docker/redis/conf mkdir -p /home/docker/redis/data
然后去官方文件配置地址
找到对应的版本,然后cd到目录下,把配置文件下载下来
1 2 cd /home/docker/redis/conf wget 配置文件地址
根据需要修改完配置后,然后就可以运行命令
1 2 3 4 5 6 7 docker run \ -p 6379:6379 \ --name redis \ -v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /home/docker/redis/data:/data \ -d redis redis-server /etc/redis/redis.conf \ --appendonly yes