MySQL访问控制系统入门
MySQL访问控制由两部分构成
- 连接时验证:使用有效的用户名和密码来进行登录操作
- 执行时验证:每个需要执行的SQL语句, MySQL会检查登录的用户是否具有足够的权限来执行该语句
权限位置
mysql 数据库包含五个主要的授权表
-
user表:包含用户帐户和全局权限列。 我们登录所用的用户信息都保存在这。
-
db表:包含数据库级权限。
-
table_priv和columns_priv表:包含表级和列级权限。
-
procs_priv表:包含存储函数和存储过程的权限。
创建用户帐户
create user yourName identified by 'password';
create user yl@localhost identified by 'yl';--新建本地账户
create user yl@% identified by 'yl';--新建远程和本地通用账户
create user yl@192.168.0.110 identified by 'yl';--新建远程ip制定账户
--查看账户权限
show grants for yl@localhost;
---GRANT USAGE ON *.* TO 'yl'@'localhost' IDENTIFIED BY PASSWORD '*密文密码'
--*.* 显示 yl 用户帐户只能登录到数据库服务器, 没有其他权限
--两个星号的区别:前者表示数据库, 后者表示表
--刷新权限、在删除账户,新建账户并授权之后
flush privileges;
授予权限
GRANT privilege,[privilege],.. ON privilege_level
TO user [IDENTIFIED BY password]
[REQUIRE tsl_option]
[WITH [GRANT_OPTION | resource_option]];
--授予所有权限
grant all on *.* to 'yl'@'localhost' with grant option;
show grants for yl@localhost;
--GRANT ALL PRIVILEGES ON *.* TO 'yl'@'localhost' IDENTIFIED BY PASSWORD '*密文密码' WITH GRANT OPTION
flush privileges;
撤销权限
REVOKE privilege_type [(column_list)]
[, priv_type [(column_list)]]...
ON [object_type] privilege_level
FROM user [, user]...
revoke all privileges, grant option from yl;
删除一个或多个用户帐户
use mysql;
select user, host from mysql.user;
--删除用户,删除多个时用逗号(,)隔开
drop user 'yl@localhost';
--例外:如果删除时该用户已经连接到数据库,那么删除之后该用户仍可使用到会话结束,可以采取在删除之前先关闭用户的会话
show processlist;
kill id;--杀死id
drop user yl@localhost;
备份数据库
mysqldump -u [username] –p[password] [database_name] > [dump_file.sql]
[username] : 有效的MySQL用户名。
[password] : 用户的有效密码。 请注意, -p 和密码之间没有空格。
[database_name] : 要备份的数据库名称
[dump_file.sql] : 要生成的转储文件
--Mysql数据库备份指令格式:
mysqldump -h主机名 -P端口 -u用户名 -p密码 (–database) 数据库名 > 文件名.sql
--1、备份MySQL数据库的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
--2、备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > d:\111.sql
--3、直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > d:\111.sql.gz
--4、备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > d:\111.sql
--5、同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –-databases databasename1 databasename2 databasename3 > d:\111.sql
--6、仅备份数据库结构
mysqldump -uroot -proot –-no-data –-databases project3 project3 project4 > d:\111.sql
--7、备份服务器上所有数据库
mysqldump -uroot -proot –-all-databases > d:\111.sql
恢复数据库
数据库还原有三种方式:source命令、mysql、gunzip命令
source命令
进入mysql数据库控制台,登录
mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\test.sql
mysql
mysql -hhostname -uusername -ppassword test < d:\test.sql
gunzip命令
gunzip < d:\test.sql.gz | mysql -uusername -ppassword test
其他查看命令
--列出所有的数据库
show databases;
--模糊查询数据库(pro%:以pro开头;%pro:以pro结尾;%pro%:含有pro)
show databases like '%pro%';
--列出数据库下所有的表
show tables;
--列出数据库下所有的表和视图
show full tables;
create view selectAll as select * from employee;
--模糊查询表参考模糊查询数据库,二者一样
--查看表结构
describe employee;
desc employee;
show columns from employee;
show full columns from employee;
--模糊查询参看模糊查询数据库
show full columns from employee like '%pro%'
--列出所有用户
select user from mysql.user;
--显示当前登录用户
select user();