Ubuntu+Docker 的数据库使用
一天突然想在Ubuntu的虚拟机里装一个docker 然后在docker里装所有常用的数据库 例如mysql oracle db2
然后就查了一下并且自己动手实践了一把 这里做下笔记记录一下
首先准备工作安装好一个Ubuntu的虚拟机 和 docker容器 且配置好镜像源
****可以省略不看的部分****
#查看版本
uname -a
#设置root密码 获取root权限
sudo passwd root
#修改Ubuntu镜像源
找到software&update 图标 修改镜像源为aliyun
#安装docker
apt install docker.io
#修改docker镜像源
vi /etc/docker/daemon.json
{"registry-mirrors": ["http://hub-mirror.c.163.com"]}
systemctl restart docker.service
用docker info显示 Docker 系统信息,查看镜像地址是否已经改好了
*********************************
docker 命令不多讲了
************重点来了********
docker下使用mysql
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=root docker.io/mysql:latest
这个是组合命令 会自动查询下载镜像并运行一个容器
这里MYSQL_ROOT_PASSWORD=roo是t设置root的密码为root
进入容器,修改root用户允许远程访问
进入容器命令:docker exec -it mymysql /bin/sh
修改远程权限:alter user 'root'@'%' identified with mysql_native_password by 'root';
远程连接直接连接虚拟机的ip:3306即是mysql的地址即可
注意这里用连接工具连接可能回报一个错
“
plugin caching_sha2_password could not be loaded
”
解决办法:
打开cmd:mysql -uroot -p
进入mysql依次执行下面语句
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; #修改密码加密策略
flush privileges; #刷新权限
重置密码:alter user 'root'@'localhost' identified by '123456
';
docker 下使用oracle
1.拉去oracle数据库镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g //这个是到固定地址去拉去镜像
2.启动oracle 自动启动镜像 --restart=always
docker run -p 1521:1521 --name oracle_11g -d --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
3.启动服务
docker start oracle_11g
4.进入控制台设置用户信息
docker exec -it oracle_11g bash
5.切换到root用户模式下
su root
输入密码helowin //重点要记住这个密码
6.编辑profile文件配置ORACLE环境变量
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
7.重启配置文件服务
source /etc/profile
8.建立sqlplus软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
9.切换到oracle用户,修改oracle的相关账号密码
>su oracle
登录sqlplus并修改sys、system用户密码
>sqlplus /nolog
>conn /as sysdba
>alter user system identified by oracle;
>alter user sys identified by oracle;
>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
********可以省略不看的部分*********
创建表空间及使用
CREATE TABLESPACE XX LOGGING DATAFILE '/tmp/xx.dbf'
SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 500M EXTENT MANAGEMENT LOCAL;
create temporary tablespace XX_temp tempfile '/tmp/xx_temp.dbf'
size 100m autoextend on next 32m maxsize 500m extent management local;
CREATE USER helf IDENTIFIED BY helf DEFAULT TABLESPACE XX TEMPORARY TABLESPACE XX_temp;
grant connect,resource,dba to helf;
grant create session to helf;
drop user helf;
drop tablespace XX including contents and datafiles cascade constraint;
******************************************************
docker 下使用DB2
docker search db2
docker run -it --network=host -p50000:50000 -e DB2INST1_PASSWORD=db2inst1-pwd -e LICENSE=accept ibmoms/db2express-c:latest bash
执行结束后会直接进入到db2的容器中
第一步passwd root 给root 设置密码 //这里的两个密码要记住
还有db2inst1
切换到实例用户db2inst1
su - db2inst1
5、启动实例
[db2inst1@docker ~]$ db2start
SQL1063N DB2START processing was successful.
6、查看运行状态
[db2inst1@docker ~]$ db2pd -
Database Member 0 -- Active -- Up 0 days 00:00:39 -- Date 2018-03-26-10.27.52.857206
7、查看已经创建的数据库
[db2inst1@docker ~]$ db2 list dbdirectory
db2 create db [dbname] #创建数据库
db2 list db directory #列出所有数据库
db2 list active databases #列出所有激活的数据库
db2 get db cfg #列出所有数据库配置
创建用户并给与权限连接
切换成root
useradd helf // 小写 记住小写
passwd
CONNECT TO databasename
CONNECT RESET
db2 grant DBADM on database to user helf 赋权
db2 connect to [dbname] user [username] using [password] 测试连接
1:直接命令如下:
db2 list application show detail查看抄连接
db2 force application(id1, id2)断开连接
2:连接到数据库袭后,用get db cfg for database查看一下maxappls和avg_appls的数百值。
用update db cfg for database using maxappls number,把maxappls设置度得更大问些。
3:在控制中心也可以设置:list applications all 可以看到答当前的进程
#启动数据库实例
db2start
#停止数据库实例
db2stop
如果你不能停止数据库由于激活的连接,在运行db2stop前执行db2 force application all就可以了
#创建数据库
db2 create db [dbname]
#连接到数据库
db2 connect to [dbname] user [username] using [password]
#断开数据库连接
db2 connect reset
#列出所有数据库
db2 list db directory
#列出所有激活的数据库
db2 list active databases
#列出所有数据库配置
db2 get db cfg
#列出所有数据库详细配置
db2 get db cfg show detail
#更新数据库配置
db2 update db cfg for [dbname] using [paramtername] [parametervalue]
#删除数据库
db2 drop database [dbname]
过程不是很复杂就是比较乱 记录下以便以后需要时使用
还有一点就是 虚拟机总是容易出现各种问题 所以建议不用时挂起