docker安装mysql8.0.20并远程连接

这篇具有很好参考价值的文章主要介绍了docker安装mysql8.0.20并远程连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

今天docker安装mysql8.0.20捯饬了半天,主要是挂载问题和连接问题,索性记录一下。网上很多千篇一律,还有很多就是过时了,那还是我自己上场吧。大家看的时候,请睁大眼睛,按步骤来。

Docker安装MySQL8.0.20

此处默认你已经搭建好了docker环境

第一步 拉镜像

docker pull mysql:8.0.20

第二步 启动

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20

第三步 复制

将容器内mysql的数据配置复制到本机,后面那个路径就是你想要映射的文件地址
docker cp mysql:/etc/mysql /root/mysql8.0.20

建议授权一下文件夹 防止权限问题异常, 进入到root目录
chmod 777 mysql8.0.20

第四步 删除旧容器

docker stop mysql && docker rm mysql

第五步 重新按以下命令启动, 建议自己保存下来

如果不熟悉,建议不要改动。映射端口以及容器名称可自行更改
docker run \ -p 3306:3306 \ --name mysql8 \ --privileged=true \ --restart unless-stopped \ -v /root/mysql8.0.20/mysql:/etc/mysql \ -v /root/mysql8.0.20/logs:/logs \ -v /root/mysql8.0.20/data:/var/lib/mysql \ -v /root/mysql8.0.20/mysql/mysql-files:/var/lib/mysql-files \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:8.0.20
如果缺少 -v /root/mysql8.0.20/mysql/mysql-files:/var/lib/mysql-files 这个会报异常
到这里基本完成一半。

登录并远程连接

进入容器并登录,你会发现登录不了

进入mysql8容器
docker exec -it mysql8 /bin/bash

登录
mysql -uroot -p ,输入密码 发现登录不了. 输入 exit 先退出容器

修改配置文件

进入 /root/mysql8.0.20 文件, 编辑 my.cnf, 在[mysqld]增加一行 skip_grant_tables 此时mysql是无密码状态

重启容器

docker restart mysql8

再次进入容器

参考上述登录,再次输入 mysql -uroot -p 连按两次回车可登录成功 显示如下:

root@15006e4d70b3:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

进入数据库

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

查看表

mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
33 rows in set (0.00 sec)

查看用户表

mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
4 rows in set (0.01 sec)

因为 caching_sha2_password ,所以使用密码登录是不行的,需要修改

修改plugin

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.01 sec)

这个时候 root还是不能远程登录,会报错,提示找不到ip。此处的密码,最好设置复杂一点,确保一次性通过.

修改远程连接

mysql> update user set host='%' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

确认是否更改

mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
+-----------+------------------+-----------------------+

可以看到已经更改成功了,别高兴太早,这时候还是连不上,需要刷新以下权限!

刷新权限

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

这样就搞定了

使用navicat连接一下试试

连接成功!

善后

还记得之前增加的那个 skip_grant_tables 吗,要把它注释掉。然后重启就算完结了。

如果还是连不上,确保你的服务器端口是正常放行的,可以去云服务器安全组查看一下。文章来源地址https://www.toymoban.com/news/detail-855104.html

到了这里,关于docker安装mysql8.0.20并远程连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu20种安装MySQL8(超全教程)

    安装 设置root密码 允许远程连接: 尝试连接 good 完成设置。

    2024年02月16日
    浏览(51)
  • Ubuntu 20.04 安装 mysql8 LTS

    Ubuntu 20.04 安装 mysql8 LTS sudo apt-get update sudo apt-get install mysql-server -y mysql --version mysql Ver 8.0.35-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) Ubuntu20.04 是自带了 MySQL8. 几版本的,低于 20.04 则默认安装是 MySQL5.7.33 systemctl status mysql.service sudo netstat -tap | grep mysql sudo service mysql start sudo service

    2024年02月04日
    浏览(42)
  • Docker安装mysql&&使用Navicat远程连接mysql容器&&mysql容器的持久化测试

    文章主人公:帅哥BUG😎  文章路人: 路人 🤨  路人 😛 目录 一.安装mysql并配置文件 1.下载相关镜像 2.在宿主机中创建相关目录,用于挂载容器的相关数据 3.conf目录 4.data目录(创建mysql5.7容器) 二.使用Navicat远程连接mysql容器 1.ip addr 获取ip 2.点击连接选择MySql 3.输入ip,密码

    2024年02月03日
    浏览(48)
  • 记录CentOS7 Linux下安装MySQL8_适合正式环境_干货满满(超详细,默认开启了开机自启动,设置表名忽略大小写,提供详细配置,创建非root专属远程连接用户)

    安装前先清理mariadb和mysql相关文件:    通过命令: rpm -qa|grep mariadb 查询是否安装了mariadb    卸载: rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64(复制上面命令查到的完整名称)    通过命令: find / -name mysql 查询跟mysql相关的文件     删除文件命令:    rm -rf /etc/selinux/targeted/act

    2024年02月04日
    浏览(48)
  • 【Finalshell中远程安装linux版MySQL8.0.31】

    前言 这几天学习如何在虚拟机中安装linux版的MySQL时,遇到了很多困难,发现没有一篇完全详细的说明文档。想着既可以方便自己记录,也可以帮助到其他遇到困难的同学,故而写下一篇详细日志,这中间也借鉴了很多大佬的文档,不甚感激,在此就直接把链接粘贴过来,大

    2024年02月09日
    浏览(84)
  • 安装 mysql8.0-docker版安装

    docker pull mysql:8.0 //重新创建容器  docker run --name mysql8 -p 3306:3306 -d  -v /home/data/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/data/mysql/data:/var/lib/mysql -v /home/data/mysql/log:/logs -e MYSQL_ROOT_PASSWORD=123456 --restart=always  mysql:8.0 --lower_case_table_names=1 1-e MYSQL_ROOT_PASSWORD 设置mysql密码 -v /home/data/mysql/con

    2024年02月07日
    浏览(31)
  • Docker 安装mysql8.0

    1.从 Docker Hub 下载 MySQL 8.0 镜像。打开终端并运行以下命令: 2. 创建一个 MySQL 容器并运行。在终端中运行以下命令: 3.连接到 MySQL 服务器。使用以下命令连接到容器内的 MySQL 服务器: ,“my-mysql” 是容器的名称,“-uroot” 是 MySQL 的 root 用户名,“-p” 表示需要输入密码。

    2024年02月15日
    浏览(46)
  • Docker 安装 MySQL8.0

    docker安装mysql docker仓库搜索mysql docker search mysql docker仓库拉取mysql8.0 docker pull mysql:8.0 // 默认拉取最新版本 docker pull mysql 查看本地仓库镜像是否下载成功 docker images mysql:8.0 安装运行mysql8.0容器 查看mysql8.0容器运行情况 docker ps docker登录mysql 重启mysql docker restart mysql8.0 设置开机启

    2024年02月19日
    浏览(37)
  • docker安装Mysql8.0

    1.拉取镜像 当前安装mysql8.0,执行docker pull mysql:8.0 2.查看镜像 3.复制目录 这里由于8.0和5.6配置文件目录有所不同,可能会发生 通过docker logs命令查看,是由于缺少/etc/mysql/conf.d目录,启动失败.需要先查看目录结构,再做判断. 此处不绑定端口,只用于查看文件目录,和拷贝配置,

    2024年03月09日
    浏览(49)
  • centos docker安装mysql8

    1、创建挂载文件夹 mkdir -p /mydata/mysql/log mkdir -p /mydata/mysql/data mkdir -p /mydata/mysql/conf 2、拉取镜像最新版本,如果写 mysql:8.0.26可以指定版本 docker pull mysql 3、启动命令 docker run -p 3306:3306 --restart=always -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/my

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包