今天重新拿起数据库这一块,感觉还不错,虽然出现了很多挫折,但是都能一一化解:
建议一定要老老实实在cmd中去创建用户,创建表,只有这样你的技术才能进一步精进!
首先登陆数据库之后,用connect /as sysdba 命令进入超管用户权限内;
由于当时在前端(区别于cmd为后端)PLsql客户端中创建的jack账户,也忘记了密码。
由于此数据库在服务器,所以在本地电脑安装了一个客户端软件navicat(Navicat Premium 16),远程连接真是费时间。
有些人也喜欢PLsql客户端,这个因人而异,我当时觉得PLsql客户端配置又繁琐,还可能无法连接mysql,所以就选择navicat。
今天用navicat创建了2个表,发现其中一个表的数据无法修改,提示
oracle中 ORA-01950: 对表空间 'users' 无权限
结果查询得知,是没有给此用户jack授权,所以需要授予resource权限:
注:
RESOURCE角色:仅具有创建CLUSTER,INDEXTYPE,OPERATOR,PROCEDEURE,SEQUENCE,TABLE,TRIGGER,TYPE的权限。同时,当把ORACLE resource角色授予一个user的时候,不但会授予ORACLE resource角色本身的权限,而且还有unlimited tablespace权限,但是,当把resource授予一个role时,就不会授予unlimited tablespace权限。
CONNECT角色:仅具有创建SESSION的权限
授权语句:grant resource to jack;
若要在cmd中查看用户jack空间下的表,必须要用此用户信息登陆,发现登陆不了。(上图13行)提示登陆被拒绝,显然是密码错误的原因。
所以,遇到密码忘记的问题,可以尝试多试几次,说不准试成功了呢?
我是个例外,没有成功,只能想办法修改,这一点做的比mysql好些。显然不能直接修改,必须要在超管的权限下:
connect /as sysdba
然后:
如果没有create session权限也是无法登陆的;继续用超管账户给jack授权:
grant create session to jack;
注:一定要用超管账户
发现授权之后,可以登陆jack账户;
我们利用select table_name from user_tables;命令查询此用户下的表信息;
发现,虽然可以看到所有表名信息,但是无法查看表结构信息;
一查发现,客户端管理工具创建的表,有重新编码的可能,所以查之前,给这个表名加上英文格式的双引号;
今天收获满满,明天继续研究!加油!