表记录的格式:
1、设置数据库管理员的初始密码
默认情况下,数据库管理员在本机登陆时不需要密码
[root@server1 ~]# mysqladmin –hlocalhost -uroot password “xxxxx”
[root@server1~]# mysql -hlocalhost -uroot -pxxxxx
注:密码用双引号括起来,password加密,密文保存在mysql数据库的user表里
2、重置数据库管理员的密码
[root@server1~]#mysqladmin –h数据库IP/主机名 -u数据库管理员名 –p password “xxx” //输入正确的旧密码,新密码设置才能成功
[mysqld]
skip-grant-table=1 // 登录时跳过授权库
2)登录后修改密码
mysql>updatemysql.user set password=password(‘123’) where user=’root’ and host=’localhost’
3)手动修改授权库下的表后执行flushprivileges;命令使之生效
Select user(); 查看当前登录用户
Show grants for 用户名@“客户端地址”;//管理员root查看授权用户的授权信息
Desc mysql.user
mysql> show grants; //登陆账号查看自己的权限
mysql>grant 权限列表 on 数据库名 to 用户名@”客户端地址” identified by “密码” with grant option //授权命令
mysql>select user,host,password frommysql.user; //查看当前服务器上的授权用户
mysql>show grants for root@”192.168.10.2” //查看用户的权限
权限列表表示:授权用户登录后,在数据库服务器上可以执行的操作
all—所有权限、select,delete,update 指定有某种权限
select,update(name,sex,age) 指定有某种权限
数据库名表示方式:授权用户登陆后,可以操作的库
*.* 服务器上的所有库所有表
数据库名.表名 某个库下的某个表
数据库名.* 某个库里的所有表
数据库不一定事先存在
用户名表示方式:管理员授权时自定义的用户名(mysql.user),要有标识性,与系统账号(/etc/passwd)无关,用户受完权后信息保存到mysql.user 表里,是连接数据库服务器时使用的名字
客户端地址表示:默认所有客户端地址
%(所有主机)、某个IP地址、某个网段(192.168.10.%)、主机名(数据库服务器能够解析主机名)、区域(%.tarena.com)
identified by ‘密码’:设置授权用户连接服务器时使用的密码,是可选项,若不写此选项,用户登录时不需要密码
with grant option :授权用户是否有授权权限,是可选项,若不写,用户没有授权权限
练习:授权数据库管理员root账号可以从地址是192.168.10.2主机连接数据库服务器192.168.10.254,连接密码是666,对所有库所有表有完全权限,且有授权的权限;允许webuser账户从网络中的所有主机访问数据库服务器,只对数据库服务器上的webdb有完全权限,密码888。
mysql>setpassword=password(‘新密码‘); //授权用户登陆后修改自己的密码
mysql>set password for 用户@‘客户端地址‘=password(‘新密码‘); //管理员重置授权用户的密码
mysql>grant all on webdb.*to root@‘192.168.10.1‘ identified by ‘tarena‘ with grant option;//不能授权,因为授权信息要写到mysql库中,而root@‘192.168.10.1‘对mysql库没有写的权限
user:对用户的授权信息--
db:库的权限信息
tables_priv:表的权限信息
columns_priv:字段的权限信息
revoke 权限列表 on 数据库名.表名from 用户名@’客户端地址’;
revoke insert,delete on *.* from root@”192.168.1.100”;
revoke grant option on数据库名.表名from 用户名@’客户端地址’; //撤销用户的授权权限
释例:
grant all on *.* to root@"192.168.1.100" identified by "888" with grant option ; //授权root用户从192.168.1.100登录时,对所有数据库具有所有权限,并且具有授权权限。
revoke 权限列表 on 数据库名 from 用户名@"客户端地址";
revoke insert,delete on *.* from root@"192.168.1.100";
revoke all on mysql.* from root@"192.168.1.100";//这个命令不会成功执行,虽然上面命令给这IP地址授予对所有数据库具有完全权限,但没有具体对mysql库授权,故这个命令不成立。
revoke all on *.* from root@"192.168.1.100";
*对目标对象有过授权才能撤销授权。
mysql>flush privileges;
注:只有对目标对象做过授权才能取消权限
delete from mysql.user whereuser=’xxx’;
注:mysql.user 保存用户的授权信息
授权对mysql 库有完全权限且有授权权限时,用户对其他库无授权权限
注意:
不允许数据库管理员从数据库本机登录
授权可以使用数据库管理员从自己工作的PC登录服务器 *.* all with grant option
给网站开发任意开发授权用户
数据库管理员默认名叫root
1.忘记数据库管理员密码怎么办?
[root@localhost ~]#service mysql stop //先停止mysql服务
[root@localhost ~]#service mysql start--skip-grant-table //启动mysql服务,用--skip-grant-table实现在启动服务时“跳过mysql授权库里的user用户账户信息表
[root@localhost ~]mysql //输入mysql然后回车进入
mysql>desc mysql.user; //查看mysql.user表结构
mysql>select user,host,password from mysql.user; //因为mysql.user目前就一个用户root, 所以搜索‘user用户‘"host主机名""password密码" 查看一下
mysql>update mysql.user setpassword=password("123") where user=”root” and host=”localhost”; //配置密码 用update更新一下user表里的字段password的数据,更新的密码123
mysql >flush privileges; //刷新
mysql>exit //退出
[root@localhost ~]#service mysql restart //重启服务
[root@localhost ~]mysql -root -p123 //用新密码进入
2.重置管理员密码
需要有MySQL-client-5.6.15-1.el6.x86_64.rpm这个包,mysqladmin这个命令才能用
[root@localhost ~]# mysqladmin -uroot -p password "123456" //设置新密码为“123456”
Enter password: //输入旧密码回车,旧密码正确新密码才能设置成功
[root@localhost ~]#
[root@localhost ~]# mysql -uroot -p123456 //用新密码进入
数据库授权的前期环境配置
1.用两台linux6.4做实验,确保互相能ping通
2.临时关闭selinux
3.永久关闭selinux 【进vim /etc/sysconfig/selinux 配置配置SELINUX=disabled】
步骤操作:
ping 数据库服务器ip地址
[root@localhost~]# service iptables stop //停用防火墙
iptables:清除防火墙规则: [确定]
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:正在卸载模块: [确定]
[root@localhost~]# chkconfig --level 35 iptablesoff //下次开机不启动防火墙
[root@localhost~]# setenforce 0 //临时关闭selinux
[root@localhost~]# vim /etc/sysconfig/selinux //永久关闭selinux
[root@localhost~]# grep disable /etc/sysconfig/selinux
# disabled - No SELinux policy is loaded.
SELINUX=disabled // 配置SELINUX=disabled
[root@localhost ~]#getenforce //查看selinux的运行级别
Permissive
二、mysql数据库服务器登录账户的授权和权限撤销
默认情况下数据库管理员只能从数据库服务器本机登陆。
默认情况下数据库管理从服务器本机登陆的时候才有授权权限。
2.1用户授权
show grants; //登陆账号查看自己的权限
select user,host,password from mysql.user; //查看当前数据库有哪些授权用户账号
show grants for root@‘192.168.10.20‘; //查看授权用户账号root的权限
2.2授权命令的语法格式:
mysql> grant 权限列表 on 数据库 to 用户名@"客户端地址"
>identified by "密码" with grant option;
例子:
mysql> grant all on *.* to root@"192.168.10.10"
mysql>identified by "888" ,
mysql>with grant option; //可选项,含义是授权给某个用户
对语法格式解释如下:
权限列表:(授权用户登陆之后有什么样的权限)
usage 无权限【除有浏览权限外,无其他权限】
all 所有权限
select,delete,update(字段名1,字段名2)
数据库名:(授权用户可以操作的库)
*.* //服务器上的所有库所有表
数据库名.表名 //某个库里的某个表
数据库名.* //某数据库里的所有表
用户名:(登陆数据库服务器时使用的名字)
授权时自定义用户名要有标识性 保存在mysql库的user表里
客户端地址:(授权用户可以从那台主机连接数据库服务器的地址,就是授权用户的地址)
% 代表所有主机
1.1.1.1 代表单个ip地址
192.168.1.% 代表某个网段 如192.168.1.0网段
pc1.tarena.com 主机名 (数据库服务器要能够解析的主机名,可以以“单个主机名”来代表“客户端地址”)
%.tarena.com 区域 (数据库服务器要能够解析区域内的主机名,只要域名叫tarena.com都授权 %匹配全部)
identified by "密码": (设置授权用户的密码)
可选项 不写时授权用户登陆数据库服务器没有密码
with grant option: (授权用户是否有授权的权限)
可选项 不写时授权用户没有授权权限
2.3 mysql库下的表作用:
mysql.user //对用户的授权信息
mysql.db //用户对库的权限信息
mysql.tables_priv //用户对表的权限信息
mysql.columns_priv //用户对字段的权限信息
set password=password("新密码"); //授权用户登录后修改自己的密码
set password for 用户@“客户端地址”=password("新密码");//管理员重置授权用户密码
2.4删除授权用户
delete from mysql.user where user=’xxx’ and host=”xxx”;
撤销授权
格式语句:
revoke 权限列表 on 数据库名 from 用户名@"客户端地址";
mysql>flush privileges; //重新加载mysql数据库信息配置【只要是手动对mysql数据库里表配置的时候,只有打这条命令才能立刻生效】
原文地址:http://315805980.blog.51cto.com/2027806/1555283