MySQL访问控制由两部分构成
连接时验证:使用有效的用户名和密码来进行登录操作
执行时验证:每个需要执行的SQL语句, MySQL会检查登录的用户是否具有足够的权限来执行该语句
权限位置
mysql 数据库包含五个主要的授权表
user表:包含用户帐户和全局权限列。 我们登录所用的用户信息都保存在这。
db表:包含数据库级权限。
table_priv和columns_priv表:包含表级和列级权限。
procs_priv表:包含存储函数和存储过程的权限。
创建用户
create user username identified by "password";
create userli@localhost identified by "li";--新建本地账户
create user li@% identified by "li";--新建远程和本地通用账户
create user li@192.168.0.110 identified by "li";--新建远程ip制定账户
查看账户权限
show grants for li@localhost;
GRANT USAGE ON *.* TO "li"@"localhost" IDENTIFIED BY PASSWORD '*密文密码'
*.*显示 li 用户帐户只能登录到数据库服务器, 没有其他权限
两个星号的区别:前者表示数据库, 后者表示表
刷新权限、在删除账户,新建账户并授权之后
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 "li"@"localhost" with grant option;
show grants for li@localhost;
GRANT ALL PRIVILEGES ON *.* TO "li"@"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 li;
删除一个或多个用户
use mysql;
select user, host from mysql.user;
删除用户,删除多个时用逗号(,)隔开
drop user "li@localhost";
例外:如果删除时该用户已经连接到数据库,那么删除之后该用户仍可使用到会话结束,
可以采取在删除之前先关闭用户的会话
show processlist;
kill id;--杀死id
drop user li@localhost;
备份数据库
mysqldump -u[username] –p[password] [database_name] > [dump_file.sql]
[username] : 有效的MySQL用户名。
[password] : 用户的有效密码。
[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 > c:\li.sql
3、直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename | gzip > c:\li.sql.gz
4、备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 > c:\li.sql
5、同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –-databases databasename1 databasename2 databasename3 > c:\li.sql
6、仅备份数据库结构
mysqldump -uroot -proot –-no-data –-databases project3 project3 project4 > c:\li.sql
7、备份服务器上所有数据库
mysqldump -uroot -proot –-all-databases > c:\li.sql
恢复数据库
数据库还原有三种方式:source命令、mysql、gunzip命令
source命令
进入mysql数据库控制台,登录
mysql -uroot -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source c:\li.sql
mysql
mysql -hhostname -uusername -ppassword test < c:\li.sql
gunzip命令
gunzip < c:\li.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();