前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker快速部署数据库

Docker快速部署数据库

作者头像
打铁读书郎
发布2024-04-11 21:08:05
1160
发布2024-04-11 21:08:05
举报

20220709_Docker快速部署数据库

代码语言:javascript
复制
修订记录:
20220709: 创建文档
20230103: 新增python连接mysql
20230717: mongo新增踩坑记录

前言

在学习Docker的基本操作之后,最近恰好遇到一个需要搭建数据库的需求,今天就来一次数据库docker版本的安装配置笔记.其中,Mysql部分记录了通过Dockerhub官方帮助文档完成数据库的安装部署,主要记录思路,mongo部分不在赘述,主要记录操作

mysql

明确需求

在Linux服务器上快速部署Docker版本mysql,并暴露端口外部连接数据库

mysql安装

Dockerhub确认官方镜像信息

dockerhub搜索mysql,选择官方镜像

查看部署服务命令

代码语言:javascript
复制
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

dockerhub的帮助文档的格式一般为 快速参照-> 软件介绍 -> 使用方法.在使用方法中可以轻松找到

第2步中的部署服务命令里面指定了默认root用户的创建方式:

其中 my-secret-pw is the password to be set for the MySQL

查看挂载目录

mysql 2个重要的挂载目录分别为Mysql Configuration File 和mysql数据存放地址,可以帮助文档-使用方法中找到

代码语言:javascript
复制
/etc/mysql/conf    # Mysql Configuration File
/var/lib/mysql    # mysql数据存放地址

官方文档在提供挂载目录路径时还会提供 参考命令, 所有使用 ‘-v ‘可以快速搜索到这些内容

默认端口确认

在官方文档没有找到默认端口文件,百度查询为3306

Docker 快速部署

代码语言:javascript
复制
docker run -id --name mysql -e MYSQL_ROOT_PASSWORD=$my_pw -p 3306:3306 -v mysql_configdb:/etc/mysql/conf -v mysql_db:/var/lib/mysql mysql
# -e 代表设置环境变量,在此命令里面我们用来设置默认账号密码 账号名:root 密码: $my_pw

后台访问数据库

进入docker环境

代码语言:javascript
复制
docker exec -it mysql bash

链接数据库

代码语言:javascript
复制
mysql -P 3306 -u root -p $密码

授予刷新权限

代码语言:javascript
复制
grant all privileges on *.*  to 'root'@'%' ;  
flush privileges;

外部访问数据库

使用DBeaver等工具, 直接连接即可

连接时如发生’Public Key Retrieval is not allowed’问题,可以尝试在数据库一栏加入?allowPublicKeyRetrieval=true进行忽略

参照:(86条消息) docker部署mysql 实现远程连接_眼沉沉的博客-CSDN博客_docker 连接mysql

mongo

mongo安装

代码语言:javascript
复制
docker run -d -p 27017:27017 -v mongo_configdb:/data/configdb -v mongo_db:/data/db --name mongo docker.io/mongo  # 启动mongo Dockerhub帮助文档里,我们知道了该镜像映射的端口号是27017,配置文件的位置在/data/configdb,数据库文件的位置在/data/db。
docker exec -it mongo bash  # 进入容器环境

# 部署例子2
docker run -d -p 27018:27017 -v mongo_configdb:/data/configdb  -v /home/data/mongo_space/db:/data/db --name test_mongo2 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=TestWeb123@Neo mongo:4.4.6  # 这里制定了db外挂目录以及root账号Miami

mongo shell 访问

mongo官方镜像,应用路径即系统根路径,找到bin目录下的mongo即可进入mongo shell页面进行操作

代码语言:javascript
复制
./bin/mongo admin    # 使用管理员身份进入mongo shell

使用studio 3T访问

studio 3T free为studio 3T免费版,免费开源的 mongo GUI 管理工具, studio 3T则是mongodb官方技术合作工具

  1. 云服务器设置暴露端口(非云服务器跳过) 进入服务器管理后台 -> 防火墙 -> 添加规则 ,可看到下图页面 协议设置为TCP, 填写数据库端口,即完成端口暴露
  2. studio 3T free 连接数据库
    1. 官网下载安装 : Free MongoDB GUI | Studio 3T
    2. 建立connection, 填写服务器ip地址及端口

安装踩坑记录

Permission denied

安装后容器启动失败, 查看docker日志提示””

代码语言:javascript
复制
find: '/data/db': Permission denied
chown: changing ownership of '/data/db': Permission denied

原因: linux selinux安全访问策略限制

解决:

代码语言:javascript
复制
getenforce     # 获取selinux开启状态
setenforce 0 	# 临时关闭selinux
docker start $container_id  # 启动容器

PostGresql

Pgsql与Mysql相比最大的优势, 是支持几何图形, XML, Json等多种高级数据类型

TODO

python链接mysql

python通过pymysql连接mysql 使用conda(或pip)安装pymysql后,

代码语言:javascript
复制
conda install pymysql

使用connnect和cursor对象连接mysql服务器

代码语言:javascript
复制
# -*- coding: utf-8 -*-
import pymysql

# 创建connect和cursor对象
conn=pymysql.connect(host = '127.0.0.1' # 连接名称,默认127.0.0.1
,user = 'root' # 用户名
,passwd='password' # 密码
,port= 3306 # 端口,默认为3306
,db='test' # 数据库名称
,charset='utf8' # 字符编码
)
cur = conn.cursor()

# sql查询语句
sql = 'show tables'
cur.execute(sql)
# 获取响应
data= cur.fetchall()
print(data)

# sql执行语句
sql = f"insert into tx_mysql_1(group_name,create_time) values('{group_name}','{createtime}')"
try:
    # 执行sql语句
    cur.execute(sql)
    # 提交到数据库执行
    conn.commit()
except:
    # 如果发生错误则回滚
    conn.rollback()
        conn.rollback()

# 关闭connect和cursor
cur.close()
conn.close()

参照:Python进阶知识全篇-MySQL(PyMySQL) - 知乎 (zhihu.com)

Python连接MySQL数据库方法介绍(超详细!手把手项目案例操作!) - 知乎 (zhihu.com)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 20220709_Docker快速部署数据库
    • 前言
      • mysql
        • 明确需求
        • mysql安装
        • 后台访问数据库
        • 外部访问数据库
      • mongo
        • mongo安装
        • mongo shell 访问
        • 使用studio 3T访问
        • 安装踩坑记录
      • PostGresql
        • python链接mysql
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档