netcore mysql实战_NetCore项目实战篇08---Docker挂载mysql并连接.netCoreWeb

我们的项目之前在直接连接的mysql,今天我们将通过docker挂载mysql 并与我们开发的webapi项目连接。

1、安装docker

下载地址:

下载后直接点下一步就可完成安装,或参见:

2、安装完成后查看版本:docker –version

791fb0ef13104e7f266e047319065dee.png

3、设置一下镜像仓库吧,点击桌面右下角下的docer小图标,右键settings进入:

6a9ff0bd9bd5cd7a402867dc5a39801b.png

4、  下载mysql 镜像。

进入cmd 输入命令:docker pull  mysql

1f17a6de0b8b41e550ce37218e3079f4.png

5、等待所有的都下载完成后启动mysql

docker run -d -p 3306:3306 --name mysql01 mysql/mysql-server

启动后可以用命令:docker ps  查看到运行的容器。

6、获取root初始密码:docker logs mysql01

复制密码:UP0jkovbOtj3mxEJLyvJeRasIL#

9bba243578390407c07097e0763aad28.png

7、进入docker中的mysql

Docker exec –it mysql01 bash

如果报错:OCI runtime exec failed:xxx

可用:Docker exec -it mysql01 /bin/sh 命令进入

72a6aadec2f17ee112b35ef239d15375.png

8、再输入:mysql –uroot –p

会提示我们修改密码:将之前复制的密码右键就可粘贴,回车,会要我们修改密码

使用:SET  PASSWORD  FOR 'root'@'localhost'=PASSWORD('1230');

如果不行可能是版本问题,mysql8.0以上就用命令:alter user 'root'@'localhost' identified by '1230';

9、修改成功后我们最好不要用root用户,来创建一个自己的用户吧:

Create user 'zhengwei'@'localhost' identified by '1230';

faa030423e04f49f1980a85642cd825d.png

10、查看用户是否创建成功:

select user,host from user  或者用  select user,host from mysql.user

03f326f473e60fe1a6097ea55aafafc4.png

11、改成任意主机都可以访问的吧:

update user set host='%' where user = 'zhengwei';

0bd90deb597f24dc12617d466d3889bf.png

12、同样我的是mysql8.0以上,用以下的sql给用户赋予所有权限:

grant all privileges on *.* to 'zhengwei'@'%' with grant option;

13、使用navicat连接一下我们的mysql,由于我本机之前是装了mysql,为了防止冲突,使用exit退出后,执行net stop mysql

ea9251261ca4a0ed76949fdc0763f2eb.png

连接时会报错:

322610715e54d1b6b15479c384d0f249.png

14、是权限的问题,再次进入mysql 如何再将进去,请看上面吧,然后刷新权限:刷新权限:FLUSH PRIVILEGES,再次连接 ,还是报错:

b918205a4a9a61f4af66426b47a70bbe.png

原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制;客户端不支持新的加密方式。

修改用户(zhengwei)的加密方式:

先查看所有用户的加密方式:

select host,user,plugin,authentication_string from mysql.user

e9c25544b8d47b7a6889da62966f793f.png

将zhengwei的加密方式修改为mysql_native_password

ALTER USER 'zhengwei'@'%' IDENTIFIED WITH mysql_native_password BY '1230';

再次连接,终于完美解决,爽:

4c9bf907761613b1f14cefe3931f567f.png

15、docker中已安装好了mysql,那就用我们之前开发的webapi连接这个mysql吧。

4a472bd90301c6b842fe7e6220c8470b.png

17、VS中选择工具->NuGet包管理器->程序包管理器控制台。

输入命令:Update-Database

记得默认项目要选zhengwei.Use.Api

0537b376a249384a52b707040e956107.png

执行完成后我们用navicat看看数据库中也生成成功了。

a1f97e139c854864463018bc4666bec8.png

如果在执行时失败,可能是因为用户的权限问题,我们要回到命令行停止当前的mysql:

命令:docker stop mysql01   再删除:docker rm mysql01

通过在启动时加环境变量,因为我们前面已创建了zhengwei这个用户就直接用这个用户启动:

docker run -d -p 3306:3306 -e MYSQL_USER="zhengwei" -e MYSQL_PASSWORD="1230" -e MYSQL_ROOT_PASSWORD="1230"  --name mysql01 mysql/mysql-server --character-set-server=utf8 --collation-server=utf8_general_ci

然后再给用户授所有的权,都按上面的顺序来就可以了。

18、打开postman访问我们的webapi也是成功的,此时我们连接的mysql是docker容器中运行的mysql,如下图:

2bc8cfc621f1d55f75795653bde238ba.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值