首页 > 代码库 > 数据库管理员密码的设置

数据库管理员密码的设置


数据库管理员密码的设置

 

表记录的格式:

 

 

一、数据库管理员密码的设置

     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”  //输入正确的旧密码,新密码设置才能成功                  

     3、恢复数据库管理员密码

       1)修改主配置文件/etc/my.cnf

       [mysqld]                                                                

skip-grant-table=1  // 登录时跳过授权库                                   

         2)登录后修改密码

mysql>updatemysql.user set password=password(‘123’) where user=’root’ and host=’localhost’                                                          

      3)手动修改授权库下的表后执行flushprivileges;命令使之生效

二、用户授权和权限撤销

1、默认情况下只有数据库管理员从本机登录时才有权限授权

    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库没有写的权限

3mysql库下的表

   user:对用户的授权信息--

   db:库的权限信息

   tables_priv:表的权限信息

   columns_priv:字段的权限信息

4权限撤销 默认只有数据库管理员从数据库本机登录有撤销权限的权限。)

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;

注:只有对目标对象做过授权才能取消权限

5、删除授权用户

   delete from mysql.user whereuser=’xxx’;

注:mysql.user 保存用户的授权信息

   

授权对mysql 有完全权限且有授权权限时,用户对其他库无授权权限

 

 

注意:

    不允许数据库管理员从数据库本机登录

    授权可以使用数据库管理员从自己工作的PC登录服务器 *.* all with grant option

给网站开发任意开发授权用户

1.设置数据库服务器管理员密码

数据库管理员默认名叫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:将链设置为政策 ACCEPTfilter                    [确定]

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数据库里表配置的时候,只有打这条命令才能立刻生效】


数据库管理员密码的设置