数据库的高级操作
数据的备份(mysqldump命令)
1、备份单个数据库
mysqldump -uusername -ppassword dbname [tbname1 [tbname2 ···]] > filename.sql
(-u后面的参数username表示的是用户名,-p后面的参数password表示的是登陆密码,dbname表示需要备份的数据库名称,tbname表示数据库中的表名,可以是一个或多个表,多个表之间用空格隔开,如果不指定则备份整个数据库,filename.sql 表示备份文件的名称,文件名前可加上绝对路径)
注:在使用mysqldump命令时,直接在DOS命令行窗口中执行该命令即可,不需要登陆到MySQL数据库
2、备份多个数据库
mysqldump -uusername -ppassword --database dbname1 [dbname2 dbname3···] > filename.sql
(--database 参数后面至少应指定一个数据库名称,如果有多个数据库,则名称之间用空格隔开)
3、备份所有数据库
mysqldump -uusername -ppassword --all-databases > filename.sql
注:如果使用 --all-database 参数备份了所有的数据库,那么在还原数据库时,不需要创建数据库并指定要操作的数据库,因为对应的备份文件中包含 create database 语句和 use语句
数据的还原(还原数据库中的数据,库是不能被还原的)
mysql - uusername -ppassword [dbname] < filename.sql
注:在还原之前必须先创建数据库
还可以登录到MySQL,使用 source 命令来还原数据
source filename.sql
用户管理
1、用户列
2、权限列 (以priv 结尾的字段决定了用户的权限)
3、安全列
4、资源控制列
创建普通用户
1、使用 create user 语句 (服务器会自动修改相应的授权表,但需要注意的是,该语句创建的新用户是没有任何权限的)
create user 'username'@'hostname' [identified by [password]'password'] [, 'username'@'hostname' [identified by [password]'password']] ···
(username表示新创建的用户名,hostname表示主机名,identified by 关键字用于设置用户的密码,password 表示用户的密码,password关键字表示使用哈希值设置密码,该参数是可选的,如果密码是一个普通的字符串,就不需要使用password关键字)
例:创建一个新用户user2,密码为123
create user 'user2'@'localhost' identified by '123';
2、使用insert语句(没有刷新权限表的功能)
INSERT INTO mysql.user(Host,User,Password,ssl_cipher、x509_issuer、x509_subject)' values ('hostname','username',PASSWORD('password'),' ',' ',' ');
(mysql.user参数表示操作的表,Host,User,Password,ssl_cipher、x509_issuer、x509_subject为相应字段,PASSWORD()是一个加密函数,用于给密码加密)
注:使用insert语句创建用户时,通常只添加Host,User,Password这三个字段即可,其他的字段取默认值,但由于ssl_cipher、x509_issuer、x509_subject字段是没有默认值的,因此还需要为这几个字段设置初始值
例:创建一个新用户,用户名为user3,密码是123
create inyo mysql.user (Host,User,Password,ssl_cipher、x509_issuer、x509_subject) values ('localhost','user3',password('123'),' ' ,' ',' ');
刷新权限表:
flush privileges;
3、grant语句为以创建的用户授权
grant privileges on database.table to 'username'@ 'hostname'[,'username'@'hostname'] ···
例:
grant select on chapter08.student to 'user1'@'localhost';
删除普通用户
1、使用drop user 语句(可以删除一个或多个用户,多个用户之间用逗号隔开;需要拥有drop user 权限)
drop user 'username'@'hostname'[,'username'@'hostname'];
2、使用 delete 语句(不仅可以删除普通表中的数据,还可以删除user表中的数据,只需要指定表名为mysql.user ,以及要删除的用户信息即可;必须拥有对mysql.user 表的delete权限)
delete from mysql.user where host='hostname' and user='username';
例:删除用户user2
delete from mysql.user where host='hostname' and user = 'user2';
修改用户密码
1、修改root用户密码
(1)使用mysqladmin语句 (mysqladmin 命令通常用于执行一些管理性的工作,以及显示服务器状态等,在MySQL中可以用来修改root密码)
mysqladmin -u username [-h hostname] -p password new_password
例:在DOS命令窗口中,将root用户的密码修改为123
mysqladmin -u root -p password 123;
2、root用户修改普通用户的密码
(1)使用update语句
update mysql.user set password=加密函数('new_password') where user='username' and host = 'hostname';
(2)使用alter语句
alter user '用户名' @'hostname' identified with mysql_native_password by '新密码';
flush privileges;
(3)使用set语句
SET PASSWORD FOR 'username'@'hostname'=PASSWORD('new_password');
3、普通用户修改密码
SET PASSWORD=PASSWORD('new_password');
权限管理
1、授予权限 (grant)



2、查看权限
show grants for 'username'@'hostname';
3、收回权限 (revoke)
1、收回用户指定权限

2、收回全部权限


浙公网安备 33010602011771号