支持多表删除:
可以建立级联删除,在两个表之间建立级联删除关系,则可以实现删除一个表的数据时,同时删除另一个表中相关的数据。
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;