@author StormWangxhu
@date 2017/12/9
1.1数据库的备份与还原
数据库的备份
1、备份单个数据库
基本语法:
mysqldump -uusername -ppassword dbname [tbname1[tbname2...]]>filename.sql
说明:
-u username 为用户名。
- p password 为登录密码
dbname 表示需要备份的数据库名称
tbname 表示数据库中国的表名。可指定一个或多个,多个表名之间用逗号隔开。若不指定,则备份整个数据库。
filename.sql 表示备份文件的名称,文件名前可加绝对路径。
2.备份多个数据库
mysqldump -uusername -ppassword --datebases dbname1 [dbname2,...]>filename.sql
说明:
–databases: 该参数后面至少指定一个数据库名称,若有多个,则名称之间用逗号隔开。
3.备份所有数据库
mysqldump -uusername -ppassword --all-databases > filenama.sql
数据的还原
定义:
当数据库中的数据遭到破坏时,可以通过备份好的数据文件进行还原,这里所说的还原是指还原数据库中的数据,而库是不能被还原的。
mysql命令还原数据的语法格式如下:
mysql -uusername -ppassword[dbname]<filename.sql
说明:
username: 登录的用户名。
password : 表示用户的密码
dbname 表示要还原的数据库名称,若使用mysqldump命令备份的filename.sql文件中包含创建数据库的语句,则不需要指定数据库。
举例操作:
1.删除数据库
2.创建数据库
3.还原数据
4.查看数据
1.2 用户管理
定义:
MySql用户分为root用户和普通用户。root用户为超级管理员,具有所有权限,如创建用户,删除用户,管理用户。普通用户只拥有被赋予的某些权限。
1.2.1 user表
安装mysql数据库时,会自动安装一个名为mysql的数据库,该数据库中的表都是权限表,如user,db,table_priv….等。
其中user表是最重要的一个权限表,他记录了允许连接到服务器的账号信息以及一些全局级的权限信息,通过操作该表既可以对这些信息进行修改。
mysql5.5的user表中大致有42个字段,大致分4类:
1.用户列
2.权限列
3.安全列
4.资源控制列
1.2.2创建普通用户
主要有三种方式:
方式一:使用grant 语句创建用户
grant语句不仅可以创建用户,还可以对用户进行授权,该语句会自动加载权限表,不需要手动刷新,且安全、准确、错误少。使用grant语句是创建用户最好的方式。
基本语法:
grant privileges on database.table
to 'username'@'hostname' [identified by [password]'password'][,...]
说明:
privileges : 表示该用户具有的权限信息。
database.table : 表示新用户的权限范围表,可以在指定数据库、表上使用自己的权限。
username : 新用户的名称。
hostname : 主机名。
password : 新用户的密码。
方式二:使用create user 语句创建用户。
该语句创建新用户时,服务器会自动修改相应的授权表,但需要注意,该语句创建的用户没有任何权限。
create user 'username'@'hostname'[identify by [password]'password'][,...]
方式三:使用insert语句创建用户
1.2.3删除普通用户
MySql中通常会创建多个用户来管理数据库,若发现某用户没有必要,就可以删除。
主要有两种方式:
方式一: 使用drop user语句删除用户
基本语法:
drop user 'username'@'hostname'[,...] ;
方式二:使用delete语句删除用户
delete from mysql.user where Host='hostname' and User='username' ;
1.2.4修改用户密码
1.修改root用户密码
(1).使用mysqladmin 命令修改root用户密码
基本语法:
mysqladmin -u username [-h hostname] -p password new_password
注:命令行第一次提示输入的密码为旧密码。
(2).使用update语句修改root用户密码
由于所有用户信息都存放在mysql.user表中,因此,只要root用户登录到MySql服务器,就可以用update语句修改自己的密码。
update mysql.user set Password =PASSWORD('new_password')
where User='username'
and Host='hostname' ;
root用户修改普通用户的密码
(1).使用grant语句修改普通用户密码
grant语句作用比较多,不仅仅可以修改用户授权,还可以修改用户的密码。为了不影响当前用户的权限,可以使用grant usafe 语句修改指定账户的密码。
grant usafe on * . * to 'username'@'localhost' identified by [password]'new_password' ;
2.使用update语句修改普通用户密码
root用户具有操作数据库的所有权限,因此,他不仅可以使用update语句修改自己的密码,还可以修改普通用户的密码。
基本语法:
update mysql.user set Password=PASSWORD('new_password')
where User='username'
and Host='hostname' ;
注意:
使用上属语句修改普通用户密码后,还需要使用flush privileges
语句重新加载权限表。
3.使用set语句修改普通用户的密码
set不仅可以修改root用户密码,还可以修改普通用户密码,在修改普通用户密码时,还需要增加一个for子句,指定要修改哪个用户即可。
set语句修改密码语法:
set password for'username'@'hostname'=password('new_password') ;
3.普通用户修改密码
set语句:
set password=password('new_password') ;
多学一招:如何解决root用户密码丢失!
大家都知道,root用户为超级管理员,具有很多权限,因此该用户密码一旦丢失,将会带来很多麻烦。
可以通过特殊方法解决,
步骤如下:
1.停止MySql服务
net stop mysql
2.使用–skip-grant-tables启动MySql服务
MySql服务器中有一个 skip–grant-tables选项,他可以停止MySql的权限判断,即说明任何用户都可以访问数据库,并且通过该选项也可以启动MySql服务,在“运行”对话框中执行如下命令。
mysql --skip-grant-tables
3.登录MySql服务器
重新开启一个“运行”对话框,在“运行”对话框中登录MySql服务器。
mysql -u root
4.使用update语句设置root用户密码
登录成功后,可以重置密码。
update mysql.user set Password=password('itcast')
where User='root' ;
5.加载权限表
MySql密码设置完成后,还需要加载权限表,让设置的密码生效。
flush privileges ;
上述步骤执行完,可以使用 EXIT
或\q
命令退出服务器,然后使用新密码重新登录。
至此,便完成了root用户密码设置。
1.3权限管理
在MySqL中,为了保证数据的安全性,数据库管理员需要为每个用户赋予不同的权限,以满足不同用户的需求。
1.3.1 MySql的权限
1.3.2 授予权限
1.3.3 查看权限
select语句可以查看权限,但是麻烦!
show grants for'username'@'hostname' ;
只需要指定用户名和主机名即可!!
1.3.4 收回权限
revoke privilege[columns][,privileges[(columns)]]
on database.table
from 'username'@'hostname'[,'username'@'hostname']...
说明:
privileges: 表示收回的权限。
columns: 表示权限作用于哪列上,若不指定,则作用整个表。
可以使用select语句查询user表中的信息。
select Host,User,Password,Insert_priv from mysql.user
where user='username\G' ;