我们知道我们的最高权限管理者是root用户,它拥有着最高的权限,包括select、update、delete、grant等操作。一般在公司里DBA工程师会创建一个用户和密码,让你去连接数据库的操作,并给当前的用户设置某个操作的权限(或者所有权限)。
1、对新用户的增删改
# 创建用户
# 指定IP为192.168.1.2的robot用户登陆
create user 'robot'@'192.168.1.2' identified by '1234';
# 指定ip为192.168.开头的robot用户登陆
create user 'robot'@'192.168.%.%' identified by '123';
# 指定任何ip的robot用户登陆
create user 'robot'@'%' identified by '123';
# 删除用户
drop user '用户名'@'可访问途径';
# 修改用户名
rename user '用户名'@'可访问路径' to '新用户名'@'可访问路径';
# 修改密码
set password for '用户名'@'可访问路径'=Password('新密码');
# 取消全局密码复杂度策略
set global validate_password_policy=0;
2、对当前的用户授权
# 查看权限
show grants for '用户名'@'IP地址';
# 刷新授权表
flush privileges;
# 授权
# 授权robot用户从192.168.1.2主机复制数据(用于主从复制)
grant replication slave on *.* to 'robot'@'192.168.1.2'
# 授权robot用户仅对db下 的tb文件有查询/插入/更新的操作
grant select, insert, update on db.tb to 'robot'@'%';
# 授权所有的权限(不包括grant命令,此命令只有root用户拥有)
grant all privileges on db.tb to 'robot'@'%';
# 此时robot用户可对db库下的所有文件执行任何操作
grant all privileges on db.* to 'robot'@'%';
# 此时robot用户可对所有数据库及文件执行任何操作
grant all privileges on *.* to 'robot'@'%';
# 取消授权
# 取消robot用户对db下的tb文件的所有权限
revoke all on db.tb from 'robot'@'%';
# 取消来自远程服务器的robot用户对数据库db下所有表的所有权限
revoke all on db.* from 'robot'@'%';
# 取消来自远程服务器的robot用户对所有数据库及表的权限
revoke all privileges on *.* from 'robot'@'%';
3、备份数据库
# 备份 数据表结构 + 数据
mysqldump -u root db > db.sql -p
# 备份:数据表结构
mysqldump -u root -d db > db.sql -p
# 备份:所有库
mysqldump -u root -p
# 导入
create database new_db;
mysqldump -u root -d new_db < db.sql -p