MySql之授权用户权限如何设置
作者:xingcsdnboke
MySql授权用户权限如何设置
首先:去 mysql 库中查看 root 用户的权限
select * from user where user = 'root' and host='localhost';
查看root权限为所有ip都可以访问
mysql> show grants for root; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD
1、授权test用户拥有 mydatabase 数据库的所有权限(某个数据库的所有权限):
mysql>grant all privileges on mydatabase.* to user@localhost identified by '123456'; mysql>flush privileges;//刷新系统权限表
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";
2、指定部分权限给一用户,可以这样来写:
mysql>grant select,update on testDB.* to test@localhost identified by '123456'; mysql>flush privileges; //刷新系统权限表
3、授权test用户拥有所有数据库的某些权限:
mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "123456"; //test用户对所有数据库都有select,delete,update,create,drop 权限。 //@"%" 表示对所有非本地主机授权,不包括localhost
MySQL赋予用户权限命令总结
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时即可跳过验证,直接进入。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。