一般来说,oracle数据库安装后,里面有很多个默认账号和密码,比较常用的是:账号:scott 密码:tiger 账号:system 密码:manager 账号:sys 密码:任意字符。
成都创新互联公司专注于企业全网营销推广、网站重做改版、芒康网站定制设计、自适应品牌网站建设、H5页面制作、商城网站定制开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为芒康等各大城市提供网站开发制作服务。
当我们想创建一个账号时,可以使用sys登录sysdba后,创建用户(需要授权),代码如下
create user 用户名 identified by "密码";
授权:grant create session to 用户名;
grant create table to 用户名;
grant create tablespace to 用户名;
grant create view to 用户名;
我们一般使用的是用scott登录sysdba,这时候有可能出现账户未解锁的状态,这时候可以用
alter user scott account unlock;
来解锁账户。解锁之后可能会要求你改密码:可以用
alter user scott identified by tiger;
再登录
conn scott/tiger;
改用户名的用处
至于改名字的用处嘛,在这样一种情景下非常有用.假如某个公司给每个员工一个账户,用户名就是你的英文名.当某个员工arwen要离职了,那就要删除掉用户arwen了.但是我们知道oracle中用户与此用户下面创建的对象是完全绑定到一起的,而不像sql
server中表等对象是可以和用户完全分开.这样的话你一删掉用户arwen那下面的数据全没了.假如我们需要那些数据
咋整
呢,最容易想到的是把所有数据先导出,然后再导入到某个用户下面.但这样比较麻烦.所以如果能改名字就更好点了.
接着用上面的例子.假如又来了新员工,weiwenhp.他是接arwen的班的.所以他很需要用户arwen下面的数据.此时就把用户arwen改成用户weiwenhp.我们登陆数据库时,
数据库系统
会判断我们的用户名和密码正确不,那我们自然想到这些信息肯定保存在数据库里面哪个地方,肯定会有一个啥保存用户信息的表.没错,所以用户信息保存在表user$中.
select
*
from
user$
用这个sql一查你会看到所有用户名和密码,还有其他一些信息.不过用户名都是加密的.所以即使是管理员也看不到任何用户的密码,只能改用户的密码.
那肯定想,用户名和密码在这那我在这里把名字改下就行了啊.实际上改名就真这么做.
select
user#,
name
from
user$
where
name
=
'ARWEN';
--先瞧下arwen的信息,其中user#就是一个
序列号
,相当于
身份证号
吧,假如这里是250
update
user$
set
name
=
'WEIWENHP'
where
user#
=
250;
--于是用户名就改好了啊.当然是update语句就记得再commit提交下啊.
还要做的工作
我人知道要是改了密码的话马上就生效能用的啊,改名字了咋就不成了呢.
我们知道数据库中很重要的一点是要保证
数据一致性
,某个地方的数据更改了,相关的地方也得跟着改才好.那这里肯定是因为登陆时读取的用户信息还没有更新.有
数据不一致性
的情况出现.你可能会想到有时我们用alter更改一些参数信息得重启数据库才能生效.
于是你
就想不会
我改
了名还得重启数据库.
这也太恐怖了吧
.
实际上不用重启数据库拉,你这样强制更新下.
alter
system
checkpoint
;
alter
system
flush
shared_pool;
你再次
登陆就发现可以登陆了啊.而之前的arwen用户就登不了啊.
在以SYSDBA身份登陆时可以修改其他用户的密码,比如:用户已更改。在以SYSDBA身份登陆时可以修改其他用户的密码,比如:用户已更改。一般来说,oracle数据库安装后,里面有很多个默认账号和密码,比较常用的是:账号:scott
密码:tiger
账号:system
密码:manager
账号:sys
密码:任意字符。当我们想创建一个账号时,可以使用sys登录sysdba后,创建用户(需要授权),代码如下我们一般使用的是用scott登录sysdba,这时候有可能出现账户未解锁的状态,这时候可以用来解锁账户。解锁之后可能会要求你改密码:可以用
-- 直接修改底层表USER$更改用户名(该方法在Oracle9i中测试通过)SQL UPDATE USER$ SET NAME='TT' WHERE USER#=91;已更新 1 行。SQL COMMIT;提交完成。SQL ALTER SYSTEM CHECKPOINT;系统已更改。SQL ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890'*ERROR 位于第 1 行:ORA-01918: 用户'TT'不存在 强制Oracle 读取实际数据,而不是读取缓存SQL ALTER SYSTEM FLUSH SHARED_POOL;系统已更改。SQL ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';用户已更改。 测试连接SQL CONN TT/TT已连接。SQL SELECT * FROM TAB;TNAME TABTYPE CLUSTERID------------------------------ ------- ----------TEST_TT TABLESQL CONN / AS SYSDBA已连接。SQL SHOW USERUSER 为"SYS"SQL SHUTDOWN IMMEDIATE数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL STARTUPORACLE 例程已经启动。......数据库装载完毕。数据库已经打开。
1、连上 oracle数据库。(使用sys或者sysdba)。 2、select * from user$; 查找name为要修改的用户名。 3、update user$ set name=“新用户名” where 4、alter user 新用户名 identified by 新密码。