docker 中安装 MySQL 以及使用

环境:我使用3A服务器搭建centos7

简介

这里的实现思路是,先拉取完MySQL 镜像之后,启动 MySQL 容器,然后将 MySQL 的配置文件拉取到本地,关闭之前启动的容器,重新使用挂载的方式启动。

第一步:拉取mysql 镜像

docker pull mysql



第二步:在本地创建用于挂载的目录

这里是用来在本地创建一个conf 文件,以后启动 docker 中的 mysql 时,就使用这个配置文件

 

// 用于挂载mysql数据文件 -p 指的是没有父级的时候,创建父级文件夹

sudo mkdir -p /apps/mysql/data

 

// 用于挂载mysql配置文件

sudo mkdir /apps/mysql/conf

 

// 上面的两个步骤,可以使用下面这个命令来执行

mkdir -p /apps/mysql/{conf,data}

 

// 修改   /my  目录拥有者

sudo chown root:docker $PWD/mysql

 

 

第三步:查看mysql 配置文件的路径,复制配置文件到本地

这里是需要进入docker 容器中,查看 容器中的配置文件路径,将配置文件复制到本地

 

# 启动一个测试的容器

docker run --name mysqltest \

-p 3307:3306 -e MYSQL_ROOT_PASSWORD=root \

-d mysql

 

# 访问 mysql 容器

docker exec -it mysqltes /bin/sh

 

# 查找Docker内,MySQL配置文件my.cnf的位置

mysql --help | grep my.cnf

 

#  显示如下,意思是路径按优先排序,会是在以下路径里:

#  配置文件的路径不一定都一样,有些博客介绍的位置是在/etc/my.cnf。

#  而我这个系统上面实际存在位置是在/etc/mysql/my.cnf

order of preference, my.cnf, $MYSQL_TCP_PORT,

/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

 


创建好本地的挂载数据路径后,我们再将测试容器里MySQL 的配置文件复制到该路径。日后需改配置,直接在挂载路径的配置文件上修改即可。

 

docker cp mysqltest:/etc/mysql/my.cnf /apps/mysql/conf

第四步:使用镜像创建容器

这里介绍两种挂载的方式,使用下面其中一种就好。

 

使用-v 挂载方式

 

这里需要切换到/apps/mysql 目录下

 

docker run --name mysql -p 3306:3306 -v $PWD/data:/var/lib/mysql -v $PWD/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql

命令解析:

 

--name:容器名

--p:映射宿主主机端口

-v:挂载宿主目录到容器目录

-e:设置环境变量,此处指定root密码

-d:后台运行容器



使用-mount 方式创建

这里使用的是说,将本地的配置文件提供给docker 中的容器读取。

docker run --name wp-mysql \

-p 3306:3306 -e MYSQL_ROOT_PASSWORD=root \

--mount type=bind,src=/apps/mysql/conf/my.cnf,dst=/etc/mysql/my.cnf \

--mount type=bind,src=/apps/mysql/data,dst=/var/lib/mysql \

--restart=on-failure:3 \

-d mysql

第五步:进入docker 容器内部对 mysql 配置

这里是为了让mysql 可以让外部访问

 

 

# 进入 mysql 容器直接访问 mysql 服务

 

docker exec -it mysql /bin/sh

 

# 连接到mysql

 

mysql -uroot -p

 

输入上面设置的密码 123456


第六步:设置MySQL可以外部访问

# 创建一个账号,用来进行远程访问;

# {usernama} 是远程访问登录的用户名,不建议用 root;

# {password} 是远程访问的登录密码;

# '%'代表的是所有IP,如果可以尽量设置指定 IP 或 IP 段

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

 

# 赋予所有权限给之前创建的账号

GRANT ALL ON *.* TO 'username'@'%';

 

 

# 确认使用这里的密码登录此账号

ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

 

# 刷新权限

FLUSH PRIVILEGES;

完整的命令为

 

# 创建一个账号-admin,用来进行远程访问;

CREATE USER 'admin'@'%' IDENTIFIED BY '123456';

 

# 赋予所有权限给之前创建的账号:admin

GRANT ALL ON *.* TO 'admin'@'%';

 

# 确认使用密码{123456}登录此账号{admin}

# 密码尽量复杂,安全性更高。

ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

 

# 刷新权限

FLUSH PRIVILEGES;

连接成功的图




全部评论

相关推荐

02-12 20:22
重庆大学 Java
字节暑期刚入职四天,因为是年前,所以很多正职都放假走了,也就没有给我分配mt,然后有一个老哥在我来的时候给我发了一个landing手册,然后还有关于部门业务的白皮书,还有一些业务代码。然后本人是java面的,进来第一次接触go语言 前面几天熟悉了一下go的语法和go的框架,可以读但是还不太会写,然后业务白皮书也看的很头疼,包括landing手册里要了解的很多东西说实话我看文档真的快看死了,一个嵌套一个,问题是我还完全不知道咋用这个我了解的东西,还有就是那个项目代码,那个老哥喊我去写写单测,熟悉一下go的语法,但也进行的很困难(这是我第一段实习,之前都是springboot那一套,真不太熟悉这个)想问问大家的建议,就是我从现在开始到在开年回来之前应该做些什么,我目前就一个想法 就是复现一个landing手册上的go框架小项目 就是相当于帮自己锻炼锻炼怎么写go 或者各位大佬有没有更好的锻炼go语法的建议还有就是大家都在说vibe coding,那我应该怎么锻炼自己使用ai的能力,感觉我除了给一些需求然后它给我生成代码,好像就没别的用法了,那些什么工作流、拆解、skill啥的都不知道从哪一个地方开始,包括我现在正在实习,不知道精力该怎么分配,去网上想找找关于agent开发的一些学习流程,说实话,众说纷纭,有的是从python开始打基础然后系统学那些rag prompt langchain mcp等等,有的是说直接找一个github上的ai项目然后反复问ai,我确实有点迷茫,恳求各位大佬能留下你们宝贵的建议,我一定认真反复深刻学习有一说一 我觉得字节饭挺好吃的!
Jasonnnnnn...:直接把项目代码喂给AI然后让它帮你分析,如果组里已经有一些流程图总结的话最好,没有的话自己画一个 Go的话其实只要把基础语法搞明白就行了,项目里很多都是直接让ai帮你写好然后自己稍微改下,不用学的特别深 ai的话,可以自己写一些md文件来搞点小东西,但除非你打算转算法,否则不用把rag langchain学的特别深,了解下就行了
字节跳动公司福利 1371人发布
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务