本人初学没有任何基础,撞了很多坑,所以写这篇文章
(不保证所有步骤没有问题)
数据库手册(oracle官方只给linux教程无力吐槽,网上还有说甲骨文和苹果关系很不好的说法,不知真假):Oracle Database Security Guide, 23ai
一、官网下载docker
1,第一步下载
Docker官网地址:https://www.docker.com
直接安装对应版本
Docker Hub: https://hub.docker.com/
如需注册或者其他用处可以在docker hub中进行,本文章对docker不做任何额外操作
2,第二步检查版本
上面红圈可以打开docker下面可以查看版本
这里可以看看自己的docker版本
(1)图形版
(2)终端版
docker --version
二、下载oracle 23ai
1,第一步下载
看到这篇文章大概找了很久了,其他下载方式不做说明自行选择,只做官网的。(可以自行测试docker hub里的oracle镜像)
镜像拉取地址:Database Software Downloads | Oracle 中国
下滑复制
docker pull container-registry.oracle.com/database/free:latest
在终端粘贴,等待下载完成,我已是最新的,就不做下载展示了
下载完成可以查看
docker images
2,第二步创建容器
接下来开始创建容器,可以代码创建,也可以直接图形界面创建,这边省事而且网上教程好像比较少,就以图形界面为主了。
玩票性质,没考虑可能的问题,需要可以看看这篇:Docker安装Oracle数据库(不是mac)
sudo docker run -d -p 1521:1521 --name oraclefree container-registry.oracle.com/database/free
sudo为高级权限,输入后会要求输入电脑密码(锁屏密码,且不会显示输完回车就行)
红框为端口映射具体为<主机>/<容器>,没事不要改很多教程都说不要改,我也不知道会发生什么
橙框为自己想起的名字,随便起,这里以oraclefree为例
蓝框为上一步最后包名
接下来是图形界面
右边红框按下跳出左边弹窗,点开下箭头改一下设置
第一个红框为容器名,不填自动生成,我这里改成了oraclefree
第二个框为端口,我这里不改了,改成1521改成1521改成1521(不要问,问就是翻车了)
下面为环境变量,不会配目前也不需要😁
然后run就好了
3,第三步查看运行的容器
按理来说可以直接进容器内部界面,但还是写一下怎么进去好了
这样就是运行成功了
接下来是终端界面
docker ps
有点乱,拉长一下
记住红框框住的部分,后面会用到
到这边,准备工作算是结束了,下面就是数据库部分了。
三、数据库基础配置
1,前情提要
首先要知道的是,很多教程里都有默认密码,不知道其他的怎么回事,这里一个密码都没有,只有账号,没有密码!!!这很重要,我卡了很久,后来才知道他没初始密码。。。同时密码要8位以上。
这里不需要操作,只是展示一下我是怎么发现的,不知道这个文件夹是干什么的,但他确实让我恍然大悟。翻译软件一照,全是非法零长度字符
虽然官方安装手册只有linux版本的但他确实给了东西不是吗(这么重要的事其他地方提一下啊)
官方linux版安装手册Installing Oracle Database Free
好吧,也有可能是锁了,锁了的话用这个
ALTER USER ANONYMOUS PASSWORD EXPIRE ACCOUNT LOCK;
不会用的话后面会用到类似的,在那个地方使用就行,多的我也不懂。
手册里的方法:Keeping Your Oracle Database Secure(不是安装手册)
(可怜我这么差的英语)
这下真的要开始了
2,开始配置
首先是终端的,还记得上面的id吗,现在要用了。
框出来的就是id,把我这个替换成你自己的(doker ps中显示的)
docker exec -it 9c631187d250 /bin/bash
前面的意思看别人的文章吧,我也不太懂,后面的应该是路径或者对应的command?(我猜是对应的下图)不懂,想了解自己找找吧。
这行代码的意思就是进入容器环境
图形界面端就简单多了😁点一下就好了
确认自己终端的代码行现在是这样的,它表示的是进入shall容器,与容器内的sh-4.4$是对应的
3,说明
特意单开一步强调!后面操作为新手操作,不知道有没有什么行业默认规定,或者有没有与更高级操作相冲突的部分,很多操作可以主要看别人的了,我这简单看完就行!!
我在这里使用的网上的教程,试了各种所谓的默认密码都不对,全是报错
就像我前面说的,这里其实压根就没有密码,需要自己设。
这里先贴上网上的基础代码
sqlplus /nolog --登录
conn /as sysdba --
alter user system identified by system;--修改system用户账号密码;
alter user sys identified by system;--修改sys用户账号密码;
create user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to yan_test; --将dba权限授权给内部管理员账号和密码;
4,创建用户
首先进入
sqlplus / as sysdba
docker内:
终端内:
接下来我会创建一个system用户,理论上来讲应该不需要?大家自己决定,如果创建,密码可以设成Oracle123(大写+字母+数字+至少八位,虽然但是之前我没按这个要求设也成功了)
给大家贴上怎改
alter user system identified by Oracle123;
user后面的system是用户名,by后面的是密码,所以整个的意思是修改system用户账号密码;
(记得带英文 ; )
下面这行意思是成功了,不成功我记得会出现一个2?
然后创建用户
create user c##yls identified by 123456;
看到上面的报错了吗,是的,这里必须带上c##
文章在这:基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法_oracle docker 镜像-CSDN博客
我这不创建PDB用户有需要的可以跳转
接下来是给权限(理论上完全不给好像也行)
grant connect,resource,sysdba to c##yls;
在sysdba里不让给db权限,我这里直接不给了,有需要自己试一下怎么搞。可以看一下这两篇:
在 Docker 中安装 Oracle 数据库_docker安装oracle-CSDN博客
grant connect,resource to c##yls;
到这里差不多了,后面就是查看一下了。
5,必要查看操作
前置知识:https://www.cnblogs.com/lcword/p/7421622.html
这里先看一下容器的数据名和实例名,很重要!!!
select name from v$database;
select instance_name from v$instance;
记住这个free!
先退出,再看监听:
exit
lsnrctl status;
只怪我不懂,还在到处找sid和服务名。。。
四、navicat测试连接
连接名随便填123都可以
主机名可以填:localhost、127.0.0.1,这两个都是代表宿主机随便选
端口就是1521
SID填你上一步看到的实例名
用户名就是自己设的
到这里就结束了,翻车一次,吓死我了