## 用户权限
1.新建普通用户
`CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass' `
2.使用GRANT 语句创建新用户
`GRANT SELECT,UPDATE ON *.* TO 'testUser'@'localhyost' IDENTIFIED BY 'testpwd' ;` 赋值权限
## 删除用户
MySQL 数据库中,使用DROP USER 语句删除用户,也可以直接通过DELETE从mysql.user表中删除
1.使用drop user删除用户:
DROP USER user [, user] ;
例 `DROP USER 'user'@'localhost' ;`
2.使用delete 语句删除用户
`DELETE FROM MySQL.user WHERE host='localhost' and user='username'`
## root 用户修改自己的密码
1.使用mysqladmin指定新密码
`mysqladmin -u username -h localhost -p password "newpwd"`
2. 修改mysql 数据库的user表
`UPDATE mysql.user set password=PASSWORD("rootpwd") WHERE User="root" and Host="localhost"; `
3.使用set 语句修改root 密码
`SET PASSWORD=PASSWORD("rootpwd")`
## root 用户密码丢失的解决办法
1.使用--skip-grant-tables 选项启动MySQL服务
以skip-grant-tables 选项启动时,mysql 服务器将不加载权限判断,任何用户都能访问数据库。
linux 操作系统中,使用mysqld_safe 来启动MySQL服务。也可以使用/etc/init.d/mysql命令来启动MySQL服务。
`mysqld_safe --skip-grant-tables user=mysql` 或
`/etc/init.d/mysql start-mysqld --skip-grant-tables `
启动mysql 服务后,就可以使用root 用户登录了
2.修改密码
3.加载权限表 `mysql > FLUSH PRIVILEGES; `
## 授权
权限存储在mysql.user 表中
GRANT ALL ON \* . \* 和 REVOKE ALL ON \* . \* 只授予和撤销全局权限
创建一个用户授权:`GRANT SELECT,INSERT ON *.* TO 'grantUser'@'localhost' IDENTIFIED BY 'grantpwd' WHERE GRANT OPTION;`
## 收回权限
`REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'host'`
`MySQL > REVOKE UPDATE ON *.* FROM 'testUser'@'localhost';`
## 查看权限
`SHOW GRANTS FOR 'testUser'@'localhost'`
## mysql 安全控制
1.禁止远程链接数据库
启用skip-networking, 将my.cnf的 skip-networking注释去掉即可。
如果确实需要提供远程用户访问数据库,可以考虑修改默认监听端口,同时添加防火墙规则,只允许新人网络监听
```
$ mysqladmin -u root -p shutdown
$ mysqld_safe -user=mysql &
```
2.不要把FILE、PROCESS、或者SUPER权限授予管理员以外的账户