mysql阅读笔记六

支持多表删除:

可以建立级联删除,在两个表之间建立级联删除关系,则可以实现删除一个表的数据时,同时删除另一个表中相关的数据。

1、     从数据表t1中把那些id值在数据表t2里有匹配的记录全删除 掉   DELETEt1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id

2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉DELETE t1 FROM t1 LEFTJOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或 DELETE FROM t1,USING t1 LEFT JOIN T2 ONt1.id=t2.id WHERE t2.id IS NULL

3、 从两个表中找出相同记录的数据并把两个表中的数据都删除掉    DELETE t1,t2 from t1 LEFT JOIN t2 ONt1.id=t2.id WHERE t1.id=2;

Deletefrom t1,t2 using t1 left join t2 on t1.id=t2.id where t1.id=2;

 

 

运行mysqldump不是在mysql客户端,而是在cmd命令行下,它位于mysql的bin下,

为了保证所有数据被被写到磁盘上,可能要进行备份前使用flush tables语句。

导出一张表

  Mysqldump -u用户名-p密码 库名表名 > 文件名(D:/a.sql)

导出多张表

  Mysqldump -u用户名-p密码 库名表名1 表名2 表名3 > 文件名(D:/a.sql)

导出所有表

  Mysqldump -u用户名-p密码 库名> 文件名(D:/a.sql)

导出一个库

  Mysqldump -u用户名-p密码 -B 库名> 文件名(D:/a.sql)

可以-w携带备份条件

导入:

 在登录mysql的情况下:

 Source  备份文件  souce d:/new_school.sql

在不登录的情况下

Mysql-u用户名 -p密码库名 < 备份文件


flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

 

 

1.    CREATE USER

语法:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

select user,host,password from user ;

 SELECT USER();    //显示当前用户    

2.       使用GRANT语句

语法:mysql> grant 权限1,权限2,...权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';

权限1,权限2,...权限n代表

select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file

实例:

  mysql>grant select,insert,update,delete,create,drop on company.employee to Jim@localhost identified by '123';

mysql>grant all privileges on school.* to  Jim@localhost  identified by '123';

mysql>grant all privileges on *.* to  Jim@localhost  identified by '123';

mysql>grant all privileges on *.* to jim@localhost identified by '123';

3.直接向mysql.user表插入记录:

mysql> insert into user (host,user,password) values ('%','jim',password('jim'));

mysql>flush privileges;   //刷新系统权限表

ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have adefault value

原因:在我的配置文件my.cnf中有这样一条语句

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

指定了严格模式,为了安全,严格模式禁止通过insert这种形式直接修改mysql库中的user表进行添加新用户

解决办法:

将配置文件中的STRICT_TRANS_TABLES删掉,即改为:

sql_mode=NO_ENGINE_SUBSTITUTION

然后重启mysql即可

4.       修改mysql用户密码方式:

a.       直接修改user表的用户口令:

语法:update mysql.user set password=password('新密码') where User="admin" and Host="localhost";update user set password=password('admin') where user='admin';

 flush privileges;

c.   使用SET PASSWORD语句修改密码:语法:

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");

实例:

set password for root@localhost=password('');

SET PASSWORD FOR name=PASSWORD('new password');

SET PASSWORD FOR 'admin'@'%' = PASSWORD("123456");


5.        删除用户和撤销权限:

a.       取消一个账户和其权限

Drop USER user;

drop user username@'%'

drop user username@localhost

b.       取消授权用户:

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

例子: REVOKE SELECT ON *.* FROM 'jim'@'%';

  REVOKE SELECT ON school.teacher FROM 'jim'@'%';

  revoke all on *.* from ‘jim’@’localhost ’;

  revoke all on user.* from 'admin'@'%';

      SHOW GRANTS FOR 'jim'@'%';     //查看授权

c.       删除用户:

:Delete from user where user = "user_name" and host = "host_name" ;

例子:delete from user where user='jim' and host='localhost';

再加上 flush privileges;



你可能感兴趣的:(mysql阅读笔记六)