最近在学习React框架,其中案例是利用React、antd-mobile库实现一个在线租赁平台。
项目后端使用 node + axios + mysql 搭建。其中的准备工作就是需要搭建起这套后端服务。后端代码都有,只需要能跑起来就行,毕竟学习的重点不在这里。
然而,在我的电脑上没有安装mysql...
但是,我的电脑上安装有 docker,哈哈哈,可以利用docker 跑个 mysql 容器,还是可以的。
ok, 说干就干。
1. 启动 docker服务
由于本地安装了一个docker可视化界面(docker, 官网下载的),所以就直接打开软件就行了,如果是通过其他方式安装,可以查询相关启动命令
2. 拉取 mysql 镜像
可以在 Docker Hub 上搜索 mysql 关键词获取 镜像进行下载安装,也可以在命令行通过
docker pull mysql
来拉取镜像。
3. 运行镜像
通过命令:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
来运行mysql服务, 其中
some-mysql 为容器名称
-e 为设置环境变量
my-secret-pw 替换为你需要设置登录mysql 的密码
-d 设置为后台运行
mysql:tag 这个为镜像名称
如果需要映射端口,需要添加
-p 本地端口:容器端口
我使用了如下的命令运行mysql镜像
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
4. 尝试在容器中运行,查看启动是否成功
4.1 通过`docker ps`命令查看 docker 运行情况
4.2 进入容器内部
docker exec -it 容器id bash
-i 交互式命令
-t 已伪终端的方式运行
4.3 使用mysql命令连接mysql服务
mysql -u root -p
至此,在 docker 上启动mysql 就算告一段落!!
5. 创建数据库,导入数据
5.1 拷贝本地sql文件到容器内部
docker cp 源文件 容器id:容器中的路径
5.2 创建数据库
5.3 导入数据库文件
在源文件当前路径下, 连接 mysql , 切换到刚刚新创建好的数据库 利用如下命令,执行sql脚本
source sql脚本
6. 宿主机(非容器)连接
由于我本地电脑没有安装任何关系性数据库客户端,只有在pycharm中安装了一个数据库插件,所以就使用此进行连接
主机地址: localhost/127.0.0.1
端口号: 3306(你的映射到本机的端口号)
用户名: root
密码:123456
通过以上配置,我成功连接上了数据库。查看了一下数据,还不上,居然有好几万套房屋数据!!!
卧槽,居然可以运行!!!
OK,那就运行,把后端代码跑起来吧!
拷贝下载代码、打开编辑器、安装依赖、 查看npm 脚本命令、执行
居然出现了这个错误
Client does not support authentication protocol requested by server; consider upgrading MySQL client
WTF???
查阅了几篇文章才发现,原来是 mysql 8.0之后对密码进行了加密(caching_sha2_password),之前为 mysql_native_password
ok,那就只好修改用户加密方式了
// 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; // 修改加密方式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; // 刷新 FLUSH PRIVILEGES;
然后再试, 果然能够正常运行,
贴张后端运行的图
至此,后台搭建终于结束,可以继续学习了!!!