当前位置: 首页 > news >正文

网站建设要提供营业执照网站设计论文分类号

网站建设要提供营业执照,网站设计论文分类号,做电商平台网站有哪些内容,3d网页游戏大全文章目录 一、Docker 创建 MySQL容器1. 拉取 MySQL 镜像2. 创建并运行 MySQL 容器3. 创建并运行 MySQL 容器#xff08;目录映射#xff09; 二、连接 MySQL 数据库1. 在 MySQL 容器内#xff0c;连接MySQL2. 在宿主机连接 MySQL#xff08;遇到问题及解决方案#xff09;… 文章目录 一、Docker 创建 MySQL容器1. 拉取 MySQL 镜像2. 创建并运行 MySQL 容器3. 创建并运行 MySQL 容器目录映射 二、连接 MySQL 数据库1. 在 MySQL 容器内连接MySQL2. 在宿主机连接 MySQL遇到问题及解决方案尝试过的方案失败1给mysql的root用户授权外网访问权限2修改my.cnf配置文件3关闭mysql容器所在的宿主机的防火墙4重启 MySQL 服务 最终解决问题的方案成功另外一个连接报错 本文将总结如何通过docker创建mysql容器并且通过宿主机或mysql可视化工具连接mysql容器的数据库中间有遇到问题并最终成功解决了 报错1ERROR 2013 (HY000): Lost connection to MySQL server at reading initial communication packet, system error: 2报错2ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock (2) 说明 我使用的是docker desktop for windows并且是基于WSL2 后端的并且WSL2分发使用的是Ubuntu下面演示示例中大部分命令都是通过Ubuntu来访Docker的。 一、Docker 创建 MySQL容器 1. 拉取 MySQL 镜像 拉取最新版本的mysql docker pull mysql或 拉取指定版本的mysql如 5.7 docker pull mysql:5.7如下使用docker images mysql查看已拉取的mysql镜像 rootGC:~# docker images mysql REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest 99afc808f15b 4 weeks ago 577MB mysql 5.7 92034fe9a41f 5 weeks ago 581MB rootGC:~#2. 创建并运行 MySQL 容器 使用docker run创建并运行mysql容器 使用docker ps查看正在运行的容器 rootGC:~# docker run -d --name mysql5.7 -p 33065:33065 -e MYSQL_ROOT_PASSWORD1234qwer mysql:5.7 10124d6b026e8442e7250196a1c979ff3fdd7ad5021fc50865cb871cfa662ee6 rootGC:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 10124d6b026e mysql:5.7 docker-entrypoint.s… About a minute ago Up About a minute 3306/tcp, 33060/tcp, 0.0.0.0:33065-33065/tcp mysql5.7docker run创建并运行容器 -d后台运行方式 --name mysql5.7给创建的容器起个名字如果不指定则随机生成一个默认的 -p 33065:33065将容器的端口映射到宿主机的端口前者是宿主机的端口后者是mysql容器暴露的端口 -e MYSQL_ROOT_PASSWORD1234qwer给容器设置一个环境变量设置myslq的root用户密码 mysql:5.7指定用来创建容器的镜像的名称和tag也可以用image id代替 注意这里使用的-p 33065:33065是有问题的后面会说。 这也是我自己造了一个坑把自己困了一天。。。 3. 创建并运行 MySQL 容器目录映射 在实际使用中需要将docker容器中的数据、日志、配置文件等重要目录映射到宿主机本地防止docker容器被删除后数据丢失的问题。 映射到Windows目录方式 docker run -d -p 3306:3306 --name mysql5.7 ^ -v /e/mysql/docker-mysql/my.cnf:/etc/my.cnf ^ -v /e/mysql/docker-mysql/logs:/var/log/mysql ^ -v /e/mysql/docker-mysql/data:/var/lib/mysql ^ -e MYSQL_ROOT_PASSWORD1234qwer ^ mysql:5.7映射到Linux目录方式 docker run -d -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/my.cnf:/etc/my.cnf \ -e MYSQL_ROOT_PASSWORD1234qwer \ mysql:5.7上述命令中冒号:前面的部分都是宿主机的配置信息后面的部分都是容器的配置信息。 二、连接 MySQL 数据库 1. 在 MySQL 容器内连接MySQL 进入MySQL容器并在容器内连接mysql rootGC:~# docker exec -it mysql5.7 /bin/bash bash-4.2# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.43 MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.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 exit Byebash-4.2#如上可以在mysql容器内正常连接mysql数据库。 2. 在宿主机连接 MySQL遇到问题及解决方案 rootGC:~# mysql -h 127.0.0.1 -P 33065 -u root -p Enter password: ERROR 2013 (HY000): Lost connection to MySQL server at reading initial communication packet, system error: 2这个问题困扰我一天了在网上通过搜索关键词【ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading initial communication packet’, system error: 2】找了N多相关文章都没有能解决问题。 尝试过的方案失败 虽然都没有解决我的问题我这里还是列出来 1给mysql的root用户授权外网访问权限 rootGC:~# docker exec -it mysql5.7 /bin/bash bash-4.2# mysql -u root -p mysql GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY 1234qwer WITH GRANT OPTION; mysql FLUSH PRIVILEGES;其实这个有些多余mysql容器创建完成后已经默认给了这个权限 (通过如下sql语句查看得知注意mysql容器创建完后未执行上面的grant命令查看结果如下) mysql select user,host from mysql.user; -------------------------- | user | host | -------------------------- | root | % | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | -------------------------- 4 rows in set (0.00 sec)mysql2修改my.cnf配置文件 一般位置为/etc/my.cnf或/etc/mysql/my.cnf 在配置文件中注释掉bind-address 127.0.0.1同时在[mysqld]配置下新增skip-name-resolve 这个方案对我也无效因为我的配置下本来就没有bind-address 127.0.0.1同时在[mysqld]下默认已有skip-name-resolve配置了 如下是我的my.cnf默认配置 bash-4.2# cat /etc/my.cnf # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html[mysqld] # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size 128M # sort_buffer_size 2M # read_rnd_buffer_size 2M skip-host-cache skip-name-resolve datadir/var/lib/mysql socket/var/run/mysqld/mysqld.sock secure-file-priv/var/lib/mysql-files usermysql# Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links0#log-error/var/log/mysqld.log pid-file/var/run/mysqld/mysqld.pid [client] socket/var/run/mysqld/mysqld.sock!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/3关闭mysql容器所在的宿主机的防火墙 我这里是通过Windows docker desktopUse the WSL 2 based engineLinux默认分发是Ubuntu 我把Windows的防火墙关闭了Ubuntu 压根没有启动 防火墙再通过Windows的cmd或Ubuntu的bash访问mysql -h 127.0.0.1 -P 33065 -u root -p都是报错Lost connection to MySQL server at reading initial communication packet。 所以关闭防火墙的方案对我来说也是无效的。 4重启 MySQL 服务 网上还有说重启mysql服务就好了。 但是我这里重启了mysql容器甚至重启了Windows系统都不好使 还尝试了一些其他方案现在已不记得了总之折腾了一天。 最终解决问题的方案成功 当我吃完晚饭后重新创建了一个mysql容器后这个容器的mysql竟然可以从 window cmd 或 ubuntu bash 连接。 下面是问题根源及解决方案 这个新创建的mysql容器与最开始创建的那个区别在哪里 重点是端口、端口、端口 最开始的mysql容器的创建命令 rootGC:~$ docker run -d --name mysql5.7 -p 33065:33065 -e MYSQL_ROOT_PASSWORD1234qwer mysql:5.7后来创建的mysql容器创建命令 rootGC:~$ docker run -d --name mysql5.7-2 -p 33062:3306 -e MYSQL_ROOT_PASSWORD1234qwer mysql:5.7重点是-p 宿主机端口:容器的端口 参数。 容器的端口 一定要指定为mysql监听的端口默认为3306 宿主机端口 这个可以是任意端口号只要未被其他程序占用即可 在mysql内可以通过show variables like port;语句查看mysql监听端口 rootGC:~$ mysql -h 127.0.0.1 -P 33062 -uroot -pmysql show variables like port; ---------------------- | Variable_name | Value | ---------------------- | port | 3306 | ---------------------- 1 row in set (0.00 sec)假如你修改了mysql容器的监听端口如下删掉了部分注释在[mysqld]下指定了port33065默认没有port这个字段配置mysql服务默认会监听3306端口 rootGC:~$ docker exec -it mysql5.7 /bin/bash bash-4.2# vim /etc/my.cnf bash-4.2# cat /etc/my.cnf [mysqld] port33065 skip-host-cache skip-name-resolve datadir/var/lib/mysql socket/var/run/mysqld/mysqld.sock secure-file-priv/var/lib/mysql-files usermysqlsymbolic-links0#log-error/var/log/mysqld.log pid-file/var/run/mysqld/mysqld.pid [client] socket/var/run/mysqld/mysqld.sock!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/修改完后重启mysql容器。 然后再查看mysql监听的端口已经改为了33065 rootGC:~$ docker restart mysql5.7 rootGC:~$ docker exec -it mysql5.7 /bin/bash bash-4.2# mysql -uroot -p mysql show variables like port; ---------------------- | Variable_name | Value | ---------------------- | port | 33065 | ---------------------- 1 row in set (0.00 sec)mysql这时候再通过 window cmd 或 ubuntu bash 或 远程连接工具 就可以连接到 最开始创建的 -p 33605:33605 那个mysql容器的mysql数据库了。 rootGC:~$ mysql -h127.0.0.1 -P33065 -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.43 MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.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 show databases; -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | sys | -------------------- 4 rows in set (0.00 sec)mysql注意一定要指定-h参数并且值为127.0.0.1或宿主机的网桥IP地址 另外一个连接报错 在宿主机连接mysql容器时如果未指定-h参数或者指定了-h localhost那么将会报错如下 rootGC:~$ mysql -P33065 -uroot -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock (2)cyinlGC:~$ mysql -hlocalhost -P33065 -uroot -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock (2)这是因为在缺省-h参数或-h localhost时MySQL客户端默认使用Unix Socket文件方式来连接本地数据库服务器而mysql容器暴露端口是tcp协议的使用127.0.0.1或宿主机的网桥IP地址作为主机名可以强制MySQL客户端使用TCP/IP方式连接而不是Unix Socket文件方式连接因此可连接成功。 最后总结之所以遇到上述问题就是我想当然的以为通过-p 宿主机端口:容器端口容器端口指定为33065那么创建并运行的mysql就会监听33065端口而且整个排错过程中都没有想着查看一下mysql监听的是哪个端口。现在想想真的挺傻的
http://www.zqtcl.cn/news/99981/

相关文章:

  • 佛山制作手机网站汕头网站定制
  • 网站域名解释怎么做济南集团网站建设
  • 网站怎么做咨询网站开发商
  • 建立网站的第一步网站的管理系统
  • 安远做网站做宣传册网站
  • 网站建设概况君隆网站建设
  • 富源县住房和城乡建设局网站备案信息 网站名
  • 做门窗的网站宁波附近的seo推广
  • 上海网站建设解决方案怎样设计网站
  • 龙华建站公司seo研究中心怎么样
  • 网站的大图标怎么做项目网站
  • 南京网站设计机构wap网站设计方案
  • 建站点怎么做网站wordpress 重写规则
  • 泰州做网站优化服装网站建设方案ppt
  • wordpress怎么设计网站微商城科技
  • 昆山营销型网站建设旅游网页制作模板教程
  • 企业网站开发时间淘客网站开发源代码
  • 传奇世界新开服网站html静态网页模板代码
  • 门户网站app开发网络服务提供者发现未成年通过网络发布
  • 编辑网站在线注册系统行业网站制作
  • 国外建设网站的软件西宁设计网站建设
  • 云服务器网站配置在线设计免费logo
  • 怎么在手机上做企业网站北京大学两学一做网站
  • 社区网站建设方案书服务型网站建设的主题
  • 做淘推广的网站如何制作表白链接
  • 外贸网站代码中国建设银行招聘网站甘肃分行
  • 免费ai设计logo网站西安网站开发外包公司有
  • 2017优秀网站设计欣赏如何做建议的网站
  • 获取网站访问qq怎么做链接
  • 最简单的网站建设中英文自助网站建设