linux环境docker安装mysql(安装mysql客户端)

1:docker拉取mysql镜像(可有自己选择mysql版本)

[root@localhost ~]# docker pull mysql:8.0

2:Docker 中启动 MySQL 容器,可以使用以下命令:

docker run 
-d
--net=host
--name mysql_container 
-v ./sql:/docker-entrypoint-initdb.d
-v ./mysql/conf:/etc/mysql/mysql.conf.d 
-v ./mysql/log:/var/log/mysql 
-v ./mysql/data:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD=<root_password> 
-e TZ=Asia/Shanghai 
mysql:8.0

注意:如果设置端口不同,需要–net=brige再设置端口-p 3308:3306,(不设置–net,直接使用docker会容易出现docker网络环境异常)

2-1:宿主机通过命令需要连接容器mysql需要安装客户端

mysql -h <hostname> -P <port> -u <username> -p

2-2:宿主机连接提示如下错误

[root@localhost opt]# mysql -uroot -p 
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@localhost opt]# 

注意:如果设置端口不同,需要–net=brige再设置端口-p 3308:3306,(不设置–net,直接使用docker会容易出现docker网络环境异常)

2-3:查看目录/var/lib/mysql/mysql.sock,mysql.sock的超链接指定的位置,如果没有连接mysql.sock就新增,然后连接地址填上mysqld.sock地址

2-4:可以把容器的mysqld.sock挂载出来,容器挂载目录/var/run/mysqld

docker run 
-d 
--name mysql_container 
-v ./sql:/docker-entrypoint-initdb.d
-v ./mysql/conf:/etc/mysql/mysql.conf.d 
-v ./mysql/mysqld:/var/run/mysqld
-v ./mysql/log:/var/log/mysql 
-v ./mysql/data:/var/lib/mysql 
--net=host 
-e MYSQL_ROOT_PASSWORD=<root_password> 
-e TZ=Asia/Shanghai 
mysql:8.0

注意:如果设置端口不同,需要–net=brige再设置端口-p 3308:3306,(不设置–net,直接使用docker会容易出现docker网络环境异常)

3:linux安装mysql客户端命令如下

yum install mariadb   或者yum install mysql

centos 仅安装mysql客户端

yum update -y
yum install mysql -y

注意:通过命令mysqldump --version验证是否安装mysqldump成功

mysqldump --version

通过命令查看客户端版本号

mysql --version

如果以上的方法都没有安装mysql客户端成功,可以去复制docker的mysql,如果也是失败,可以复制其他linux系统下的mysql大约3M放到指定目录下即可

[root@master ~]# docker cp mysql:/usr/bin/mysql /usr/bin/mysql
Successfully copied 7.72MB to /usr/bin/mysql
[root@master ~]# mysql -uroot -p
mysql: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
[root@master ~]# 

复制其他linux系统下的mysql大约3M放到指定目录/usr/bin下即可,接着处理mysql.sock同理,在/var/lib/mysql/mysql.sock有没有该链接,没有就创建,然后链接绑定mysqld.sock

[root@master ~]# mysql -version
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
[root@master ~]#

同理mysqldump也是一样的做法大约24M,放到指定目录/usr/bin下即可

2-2:如果提示ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory,就需要在创建容器的时候设置–default-authentication-plugin=mysql_native_password

docker run -d --name mysql --net=host -v ./mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:8.0 --default-authentication-plugin=mysql_native_password

2-3:注意:如果要挂载mysql8的配置文件,需要设置宿主机的配置文件权限为644,不然会过滤掉该配置文件

2-4:容器挂载配置文件命令

docker run -d --name mysql --net=host -v /opt/app/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /opt/app/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:8.0 --default-authentication-plugin=mysql_native_password

2-4:配置文件my.cnf(注意设置skip-grant-tables是无效的,设置lower_case_table_names=1要在容器创建前挂载,不可以动态修改数据库,不然就要清楚掉mysql数据库挂载的目录,从新生成mysql容器)

[mysqld]
lower_case_table_names=1
bind-address = 0.0.0.0
port=3306
innodb_default_row_format=DYNAMIC
innodb_log_file_size=128M
innodb_strict_mode=OFF
innodb_page_size=64k
max_allowed_packet=1024M
innodb_log_buffer_size=16M
innodb_buffer_pool_size=2G

注意:这个最好指定具体的地址,如下

docker run -d --name mysql --net=host -v /opt/app/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:8.0 --default-authentication-plugin=mysql_native_password

注意:如果设置端口不同,需要–net=brige再设置端口-p 3308:3306,(不设置–net,直接使用docker会容易出现docker网络环境异常)

3:解释一下上述命令中的参数:

-d   以后台模式运行容器
--name mysql_container:为容器指定一个名称(您可以根据需要自定义)
-v ./sql:/docker-entrypoint-initdb.d:将 ./sql 主机目录挂载到容器中的 /docker-entrypoint-initdb.d 目录,用于初始化数据库(可有可无)
-v ./mysql/conf:/etc/mysql/mysql.conf.d:将 ./mysql/conf 主机目录挂载到容器中的 /etc/mysql/mysql.conf.d 目录,用于配置 MySQL(可有可无)
-v ./mysql/log:/var/log/mysql:将 ./mysql/log 主机目录挂载到容器中的 /var/log/mysql 目录,用于存储 MySQL 日志(建议有)
-v ./mysql/data:/var/lib/mysql:将 ./mysql/data 主机目录挂载到容器中的 /var/lib/mysql 目录,用于存储 MySQL 数据(建议有)
-p 将本地主机的 3306 端口映射到容器内的 3306 端口。这允许你通过主机上的端口访问容器中的服务
-e MYSQL_ROOT_PASSWORD=<root_password>:设置 MySQL 的 root 用户密码。请将 <root_password> 替换为您想要设置的密码
-e TZ=Asia/Shanghai 参数设置容器的时区为 Asia/Shanghai
mysql:8.0:指定要使用的 MySQL 镜像及其版本
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux环境下,你可以使用Docker安装MySQL。首先,你需要运行以下命令来启动一个MySQL容器: [root@localhost ~# docker run -d -p3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=“强密码” docker.io/mysql:5.7 [1] 这个命令会从Docker Hub下载MySQL 5.7镜像,并在容器中启动一个MySQL实例。通过-p参数,我们将宿主机的3306端口映射到容器的3306端口,这样可以让我们通过宿主机访问MySQL。而-e参数用于设置MySQL的root密码,你可以将“强密码”替换为你想要设置的密码。# docker ps 如果看到mysql5.7容器正在运行,说明MySQL已经成功安装并运行起来了。 接下来,你可以通过以下命令进入到MySQL容器内部: [root@localhost ~# docker exec -it mysql5.7 bash 然后,在容器内部,你可以使用MySQL客户端连接到MySQL服务器,并进行数据库操作。 至此,你就在Linux环境中通过Docker成功安装MySQL。注意,这只是一个简单的示例,你可以根据自己的需求进行进一步的配置和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [在Linux系统中用Docker安装mysql](https://blog.csdn.net/weixin_56306210/article/details/126094938)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值