linux怎么查看本机内存大小
266
2022-11-02
MySQL中6种常见的约束/规则
主健约束(primary key) :具有唯一且非空
外键约束(foreign key) :
非空约束(not null):不可为空
唯一性约束(unique [key l index]) :唯一,可为空,但空值只允许出现一次
默认值约束(default): create (address varchar(50) default '魔都');
自增约束(auto_increment):随着记录增加,基于最新的记录的id进行+1的自增长
外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外
键。
创建外键约束作用(误删,修改),保证数据的完整性和一致性。
主键表和外键表的理解
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主表外键字段和从表的字
段具备相同的数据类型、字符长度和约束。
#创建主表test04
create table test04 (hobid int ( 4 ) , hobname varchar (50) ) ;
#创建从表test05
create table test05 (id int(4) primary key auto_increment,name varchar (10) , age int (3 ) ,
hobid int (4) ) ;
#为主表test04添加一个主键约束。主键名建议以"PK“开头。
alter table test04 add constraint PK_hobid primary key(hobid) ;
#为从表test05表添加外键,并将test05表的hobid字段和test04表的hobid字段建立外键关联。
外键名建议以"FK_"开头。
alter table test05 add constraint FK_hobid foreign key(hobid) references test04(hobid);
references :引用
#可以使用查询表语句结构命令查看外键关联
show create table test05;
desc test04 ;
desc test05;
#插入新的数据记录时,要先主表再从表
insert into test04 values(1, ' runing') ;
insert into test05 values (1, ' zhangsan',18,1) ;
#删数数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。
drop tables test05;
drop tables test04;
#查看和删除外键约束
#如果要删除外键约束字段先删除外键约束,再删除外键名
show create table test05;
alter table test05 drop foreign key FK_ hob;
alter table test05 drop key FK_ hob;
desc test05;
数据库用户管理
1、新建用户
CREATE USER '用户名'@'来源地址’ [IDENTIFIED BY [PASSWORD] '密码' ];
'用户名':指定将创建的用户名.
'来源地址':指定新创建的用户可在哪些主机上登录,可使用TP地址(192.168.226.129)、网段
(192.168.226.0/24)、主机名的形式( localhost),本地用户可用localhost,允许任意主机登录。
可用通配符%
'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD('密码'):获取密文,再在语句中添PASSWORD '密
文';
若省略"IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)
CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456';
SELECT PASSWORD ( ' abc123');
CREATE USER 'user2'@'localhost’ IDENTIFIED BY PASSWORD
'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
查看用户信息
创建后的用户保存在mysql 数据库的user表里
USE mysql;
SELECT User,authentication_string,Host from mysql.user;
重命名指定
RENAME USER 'zhangsan '@ ' localhost' TO 'lisi'@'localhost ' ;
删除用户
DROP USER 'lisi'@'localhost' ;
修改当前登陆的用户的密码
SET PASSWORD =PASSWORD ( 'abc123');
修改其他用户密码
SET PASSWORD FOR 'user1'@'localhost' = PASSWORD ( ' abc123' ) ;
flflush privilege(刷新的是mysql里的user用户权限表)
忘记root密码的解决办法
修改/etc/my.cnf 配置文件,免密登陆mysql
vim /etc/my.cnf
[mysqld]
skip-grant-tables #添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql#直接登录
然后使用SQL语句修改密码
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD ( ' abc123' ) where
user='root' ;
FLUSH PRIVILEGES;
quit
mysql -u root -pabc123
PS:最后再把/etc/my.cnf 配置文件里的skip-grant-tables 删除,并重启mysql服务
数据库用户授权
授予权限
grant 提权
GRANT 权限列表 ON 数据库名.表名 TO '用户名‘@'来源地址’ [IDENTIFIED BY '密码']; 示例:GRANT
all 0N sky.* TO 'skyuser '@' %' IDENTIFIED BY 'admin123' ;
grant all on * . *
#权限列表:用于列出授权使用的各种数据库操作,以逗号进行分隔,如"select,insert,update"。使
用"all"表示所有权限,可授权执行任何操作。#数据库名.表名:用于指定授权操作的数据库和表的名称,其中可以使用通配符" * "。
例如,使用"kgc.*"表示授权操作的对象为kgc数据库中的所有表。
#'用户名@来源地址':用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。来
源地址可以是域名、IP地址,还可以使用"%"通配符,表示某个区域或网段内的所有地址, 如"
%.kgc.com"、"192.168.226.%"等。
#允许用户lisi在所有终端远程连接mysql,并拥有所有权限。
GRANT ALL [PRIVILEGES] ON * . * To 'lisi'@'%’ IDENTIFIED BY '123456';
flflush privileges; #刷新权限
quit
mysql -ulisi -pabc123
use xyw;
show tables;
select *from yyy;
查看权限
mysql -uroot -pabc123
SHOW GRANTS FOR 用户名@来源地址;
SHOW GRANTS FOR 'lisi‘ @’%‘;
撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址;
REVOKE ALL ON * . * FROM 'lisi'@'%';
SHOW GRANTS FOR 'lisi'@'%';
#USAGE权限只能用于数据库登陆,不能执行任何操作;USAGE权限不能被回收,即REVOKE不能删
除用户。
flflush privileges;
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~