mysql--高级操作

@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]

说明:

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'  ;

你可能感兴趣的:(mysql)