MySQL 用户可用权限
一个新建的 MySQL 用户没有任何访问权限, 这就意味着你不能在 MySQL 数据库中进行任何操作. 你得赋予用户必要的权限. 以下是一些可用的权限:
ALL: 所有可用的权限
CREATE: 创建库, 表和索引
LOCK_TABLES: 锁定表
ALTER: 修改表
DELETE: 删除表
INSERT: 插入表或列
SELECT: 检索表或列的数据
CREATE_VIEW: 创建视图
SHOW_DATABASES: 列出数据库
DROP: 删除库, 表和视图
grant,index,references,reload,shutdown,process 等等
赋予权限基本命令格式
mysql> grant 权限 1, 权限 2 on 数据库名称. 表名称 to 用户名 @用户地址 identified by '连接口令';
当权限 1, 权限 2,... 被 all privileges 或者 all 代替, 表示赋予用户全部权限.
当数据库名称. 表名称被 *.* 代替, 表示赋予用户操作服务器上所有数据库所有表的权限.
用户地址可以是 localhost, 也可以是 ip 地址, 机器名字, 域名. 也可以用'%'表示从任何地址连接.
'连接口令'不能为空, 否则创建失败.
在 MySQL 安装完成后, 为了确保数据库的安全性, 通常我们都使用 mysqladmin 命令给数据管理员 root 用户添加密码, 允许远程登录并赋予所有权限.
例 1
mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
赋予所有特殊权限给 root 用户, 可以从任何 IP 地址远程登录, 密码为 abc123, 且拥有 grant 赋予权限的权限
例 2
mysql> grant select,insert,update,delete,create,drop on school.info to test@192.168.100.100 identified by '123';
给来自 192.168.100.100 的用户 test 分配可对数据库 school 的 info 表进行 select,insert,update,delete,create,drop 等操作的权限, 并设定口令为 123.
例 3
mysql> grant all privileges on school.* to test@192.168.100.100 identified by '123';
给来自 192.168.100.100 的用户 test 分配可对数据库 school 所有表进行所有操作的权限, 并设定口令为 123.
例 4
mysql>grant all privileges on *.* to test@localhost identified by '123';
给本机用户 test 分配可对所有数据库的所有表进行所有操作的权限, 并设定口令为 123.
注: 在 mysql 模式中, 当赋予用户权限或者权限设定后, 重要的一步使得命令立即生效:
mysql>flush privileges
忘记密码 重置密码
systemctl stop mysqld.service
mysqld --skip-grant-tables 启动数据库不使用授权表
source /etc/profile
mysql 进入数据库
> update mysql.user set authentication_string=password ('123456') where user='root';
> flush privileges; 刷新数据库
init 6 重启
注: 若是想默认直接跳过账户验证, 可直接通过在主配置文件中添加:
- vim /etc/my.cnf
- [mysqld]
- skip-grant-tables // 添加跳过验证命令
- user=mysql
- basedir = /usr/local/mysql
- datadir = /usr/local/mysql/data
- port = 3306
- ....
重启 MySQL 服务
systemctl restart mysqld.service
如上, 当再次进入 MySQL 时即可跳过验证, 直接进入.
来源: http://www.bubuko.com/infodetail-2680179.html