docker安装mysql
dokcer中安装软件 https://hub.docker.com/ 只需要到官网hub库中找到自己所需要的软件及版本。
docker pull mysql 默认下载最新版本,想要下载指定版本的,可以通过docker pull mysql:8.0.25 这个命令在:后面指定版本号即可。我的安装版本就是8.0.25。
![如下所示在tags里就可以找到不同版本的软件镜像。](https://img-blog.csdnimg.cn/20210524174257848.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbmdoYW9tZW1l,size_16,color_FFFFFF,t_70)
用pull下载完成后通过 docker images查看
1.启动mysql,容器文件挂载和端口映射
docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -v /mydata/mysql/mysql-files:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=root -e MYSQL_ROOT_HOST=% -d mysql:8.0.25
-e MYSQL_ROOT_PASSWORD=root //设置mysql root的密码
-e MYSQL_ROOT_HOST=% //开启远程访问(亲测安装中并没起作用)
-
docker exec -it mysql /bin/bash 通过此命令进入mysql容器中。然后通过
mysql -uroot -p 登录mysql数据库,mysql8版本可能会遇到拒接登录。
拒接登录处理方法:
第一步:/mydata/mysql/conf 在启动容器时指定的映射本地配置文件目录下新建my.cnf文件,名字可以随便起,但必须是.cnf结尾的文件。
加入下面的内容。
[mysqld]
skip-grant-tables
重启mysql服务(docker restart mysql)。即可以mysql -u用户名 -p 登录进去。
第二步:创建远程连接用户
use mysql;create user myroot identified by 'myroot'; GRANT ALL PRIVILEGES ON *.* TO 'myroot'@'%'; alter user'myroot'@'%' IDENTIFIED BY 'myroot' password expire never; // MYSQL 8.0内新增加mysql_native_password函数,通过更改这个函数密码来进行远程连接。更改ROOT用户的native_password密码 ALTER USER 'myroot'@'%' IDENTIFIED WITH mysql_native_password BY 'myroot'; flush privileges;
select user,authentication_string,host from user; 查看创建结果
第三步:注释掉my.cnf 文件中的 skip-grant-tables,需要重启mysql
docker restart mysql; 执行完成。既可以连接了。
3. mysql配置(可以在my.cnf中指定一些编码等常用参数)
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect=‘SET collation_connection = utf8mb4_unicode_ci’
init_connect=‘SET NAMES utf8mb4’
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
配置完成重启mysql即可
docker restart mysql;