之前研究docker和数据库的交互,越发对docker这个东西喜爱了。因为平常偶尔会用到各类数据库测试环境验证一些想法,需要进一步简化进入到这些环境的步骤。

比如我现在有三套docker容器数据库测试环境:

MySQL 5.7

MySQL 8.0

Oracle 19.3

使用docker ps查看具体信息:

CONTAINER ID        IMAGE                                                         COMMAND                  CREATED             STATUS                  PORTS                                                                         NAMES
219b2d4fc7c4 container-registry.oracle.com/mysql/community-server:5.7.33 "/entrypoint.sh mysq…" 24 hours ago Up 24 hours (healthy) 0.0.0.0:32773->3306/tcp, 0.0.0.0:32772->33060/tcp mysql57
c4b0fe102401 container-registry.oracle.com/mysql/community-server:8.0.27 "/entrypoint.sh mysq…" 24 hours ago Up 24 hours (healthy) 0.0.0.0:32771->3306/tcp, 0.0.0.0:32770->33060/tcp, 0.0.0.0:32769->33061/tcp mysql
576076210b7b container-registry.oracle.com/database/enterprise:19.3.0.0 "/bin/sh -c 'exec $O…" 25 hours ago Up 25 hours (healthy) testdb

虽然正常我就可以通过docker exec一条命令,进入对应容器环境的数据库SQL操作界面:

docker exec -it mysql mysql -uroot -p
docker exec -it mysql57 mysql -uroot -p
docker exec -it testdb sqlplus / as sysdba

但总是输入这个也怪麻烦的,懒惰的我就在OCI的opc用户下加几个alias的环境变量。

#alias name='value'
alias mysql='docker exec -it mysql mysql -uroot -p'
alias mysql57='docker exec -it mysql57 mysql -uroot -p'
alias sql='docker exec -it testdb sqlplus / as sysdba'

另外mysql默认有密码:第一次容器运行的mysql,首次登录的密码可以通过docker logs mysql-container-name 查看到,登入后也会强制你修改密码,个人测试环境没必要考虑安全,我就索性选择清除了mysql的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '';

一切设置就绪,下次当再登录这个环境,就可以使用我们设置好的别名直接进入对应数据库的SQL操作命令行界面:

[opc@oci-001 ~]$ mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2920
Server version: 8.0.27 MySQL Community Server - GPL Copyright (c) 2000, 2021, 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> \q
Bye
[opc@oci-001 ~]$ mysql57
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2883
Server version: 5.7.33 MySQL Community Server (GPL) Copyright (c) 2000, 2021, 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> \q
Bye
[opc@oci-001 ~]$ sql SQL*Plus: Release 19.0.0.0.0 - Production on Fri Nov 12 15:55:52 2021
Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0 SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[opc@oci-001 ~]$

以后就算维护容器,或是搞坏了某个容器环境重新建立一个,只要名字还维持之前的,就不需要改啥配置。

这简直太方便了,忍不住也记录下。

利用别名简化进入docker容器数据库的操作的更多相关文章

  1. 一文了解Docker容器技术的操作

    一文了解Docker容器技术的操作 前言一.Docker是什么二.Docker的安装及测试Docker的安装Docker的Hello world测试三.Docker的常见操作镜像的基本操作容器的基本操 ...

  2. 利用虚拟网桥实现Docker容器的跨主机访问

    最近在研究Docker,Docker的网络配置是比较令人头疼的部分,尤其是跨主机的容器间通信,很多解决方案都比较复杂,这里,我只用虚拟网桥来实现Docker的跨主机访问,分享出来,希望对Docker学 ...

  3. 利用远程服务器在docker容器搭建pyspider运行时出错的问题

    This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issu ...

  4. Docker容器核心实践(操作容器)

    镜像和容器是docker中最基础的概念,镜像可以理解为包含应用程序以及其相关依赖的一个基础文件系统,在其启动过程中,以只读的方式被用于创建容器的运行环境,本质上是基于UnionFS文件系统的一组镜像层 ...

  5. docker容器的常用操作

    创建容器 [root@mydocker ~]# docker create --name test_create -ti ubuntu 1d13990eea0d3f282a0f7d5589f40e49 ...

  6. docker容器的常见操作

    进入容器 docker exec -it 12a022ee8127 /bin/bash 交互模式进入容器 docker exec -it 12a022ee8127 ip a 查看容器的ip等信息 批量 ...

  7. Docker 容器学习笔记

    Docker 诞生于2013年,最初发起者是dotCloud公司.Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目逐渐形成了围绕Docker容器的生态体系,由于Docker在业界造成的影 ...

  8. docker系列(三):docker容器

    1 引言 在前面博文中,我们介绍了镜像.如果说镜像犹如面向对象中的类,本节要说的容器就是由类实例化出来的对象了,有了类才可以创建容器. 先从拉取一个官方提供的ubuntu最新镜像: $ docker ...

  9. Docker 容器简介与部署

    关于Docker容器技术 参考文献:<docker 从入门到精通> Docker容器简介 Docker的构想是要实现 "Build,Ship and Run Any App,An ...

  10. Docker 容器的跨主机连接

    使用网桥实现跨主枳容器连接 不推荐 使用OpenvSwitch实现跨主机容器连接 OpenvSwitch: OpenvSwitch是一个高质量的.多层虚拟交换枳,使用开源Apache2.0许可协议,由 ...

随机推荐

  1. 2个场景实例讲解GaussDB(DWS)基表统计信息估算不准的处理方案

    摘要:通过2个实例场景讲解GaussDB(DWS)运维解决方案. 本文分享自华为云社区<GaussDB(DWS)运维 -- 基表统计信息估算不准的常见场景及处理方案>,作者:譡里个檔. 场 ...

  2. 如何判断Keil MDK ARM中已经破解?如何判断Keil MDK ARM中已经安装了相应的器件库?如何判断CubeMX的器件库已经安装成功?

    如何判断CubeMX的器件库已经安装成功?请对照下图 如何判断Keil MDK ARM中已经安装了相应的器件库?请看下图 如何判断CubeMX的器件库已经安装成功?请对照下图

  3. 一分钟学一个 Linux 命令 - tar

    前言 大家好,我是 god23bin.今天给大家带来的是 Linux 命令系列,每天只需一分钟,记住一个 Linux 命令不成问题.今天,我们要介绍的是一个常用且强大的命令:tar. 什么是 tar ...

  4. docker-compose部署django+nginx+minio

    总体文件结构 docker-compose.yml文件 version: "3" # volumes: # 自定义数据卷 networks: # 自定义网络(默认桥接) web_n ...

  5. 【python基础】函数-初识函数

    函数是带名字的代码块,用于完成具体的工作,无需反复编写完成该工作的代码.之前我们接触过print函数,数据类型转换中的int函数.str函数,还有列表中的append函数.pop函数.remove函数 ...

  6. @Inherited元注解的使用

    @Inherited注解标记其他的注解用于指明标记的注解是可以被自动继承的. 注意:此注解只对注解标记的超类有效,对接口是无效的. 示例: 先声明两个用@Inherited标记的注解,@Name和@A ...

  7. AI与健康管理:趋势与未来

    目录 引言 随着人工智能技术的不断发展,健康管理也逐渐成为了一个新的研究领域.AI技术可以为健康管理提供智能化.个性化.高效的支持,使得健康管理更加人性化和科学.本文将介绍AI与健康管理的技术原理.实 ...

  8. Java使用数组存储成绩,输出成绩列表,总分,平均分

    代码如下: public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out. ...

  9. 基于JavaFX的扫雷游戏实现(一)——整体概述

    我在不要更新挑战中坚持了一年,你也来试试吧(咕咕咕)!   好言归正传,本次更新带来的是经典游戏扫雷,基于JavaFX实现.篇幅有限,文章主要介绍核心操作实现,不会列出所有代码.需要完整源码或是想预览 ...

  10. Educational Codeforces Round 151 (Rated for Div. 2) A-D

    A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { int n, ...