Linux下MySQL数据库的基础安全配置

1.登录MySQL数据库

(1):当数据库密码为空时,可以使用mysql  -h localhost  -u root 进行登录

mysql指明要连接数据库,-h指明要连接的主机,localhost指明从本地登录,-u指明登录用户,root指明以root身份登录。

mysql默认是从本机登录,因此可以使用mysql  -u root 进行登录

(2):当数据库密码不为空时,可以使用mysql  -h localhost  -u root  -p进行登录

可以看出,若不使用-p则会报错。 

同样也可以使用mysql  -u  root -p 继续登录

2.修改数据库密码

注意:在MySQL中修改数据库密码时,如果在修改密码时使用password,则密码将以密文形式存储,若不使用password,密码将以明文形式存储。

例如:update  user  set  password=password('密码')  where  user='root'  and  host='localhost' ;  此时密码将以密文形式存储

           update  user  set  password=('密码')  where  user='root'  and  host='localhost' ;     此时密码将以明文形式存储

(1):使用shell命令修改数据库root用户密码(在shell命令行中操作,而不是在mysql中操作)

mysqladmin  -u  root  -p password  '密码';    

(2):使用mysql数据库命令修改root用户密码(先使用之前的密码进行登录,然后再在MySQL数据库中修改root密码)

update  user  set  password=password('密码')  where  user='root'  and host='localhost';

root和localhost一定要用引号引起来,因为是字符串,否则会报错。

3.在管理员root遗忘数据库密码的情况下修改数据库密码

(1):跳过数据库授权表

killall  -TERM  mysqld      杀死MySQL数据库进程

mysqld_safe  --skip-grant-tables  &      在后台跳过数据库授权表,相当于不需要使用密码就能够登录

mysql  -u  root       进行登录

可以看见并没有要输入之前的密码

进入数据库后可以用之前的方法修改数据库密码

use  mysql;     切换到mysql数据库下

update  user  set  password=password('密码')  where  user='root'  and  host='localhost' ;     修改数据库密码

FLUSH  PRIVILEGES;     刷新数据库

(2):修改配置文件

  • MySQL默认配置文件是/etc/my.cnf。内容如下:

  • 修改/etc/my.cnf文件

  • 配置文件内容如下:(在[mysqld]中添加一句  skip-grant-tables)

  • 重启MySQL服务:service  mysqld  restart

  • 然后可以不要输入密码就登录到数据库,也可以像上面一样修改数据库密码

完成验证后为了安全起见,将数据库的配置文件改成初始的文件。 

4.添加数据库用户(添加用户时需要具有root权限)

(1):向mysql数据库中插入用户信息

use  mysql;        先切换到mysql这个数据库下

insert  into  user (host,user,password,select_priv,insert_priv,update_priv)  values  ('localhost','zhangsan','password('密码'),'Y','Y','Y');      向数据库中添加数据

 查看是否添加了zhangsan用户

select  user,password,host  from  mysql.user;

使用zhangsan用户进行登录(先重启服务然后再用zhangsan账号登录数据库)

(2):使用create创建用户

use  mysql;        先切换到mysql这个数据库下

create  user  'lisi'@'localhost'  identified  by  '密码';

查看是否添加了zhangsan用户

select  user,password,host  from  mysql.user;

使用lisi用户进行登录(先重启服务然后再用lisi账号登录数据库)

5.登录数据库的账号信息

MySQL数据库与生俱来的就有一个mysql数据库,MySQL数据库的所有登录信息都存放在mysql下的user表中。

由上图可以看出来,一个有三个root账号

第一个root账号的host是localhost,这个root是用来本地登录的;

第二个root账号的host是localhost.localdomain,这个root是用来通过网络远程登录的;

第三个root账号的host是127.0.0.1,这个root是用来进行本地环回测试的;

为了安全起见,最好将数据库中的多余的账号(比如空账号删除)

delete  from mysql.user  where  user='';

注意:删除用户时一定要有where语句,如果没有where语句将删除所有的用户账号信息

6.用户授权

  • 新用户授权

       mysql> GRANT 权限列表  ON  数据库或数据库中的表  TO  '用户名'@'登录IP或域名'  IDENTIFIED  BY  '密码';

  • 老用户授权

       mysql> GRANT 权限列表  ON  数据库或数据库中的表  TO  '用户名'@'登录IP或域名'

  • 权限列表

        all——所有权限

        select(查询权),insert(插入权),update(更新权),drop(删除数据库或者数据库中的表权),delete(删除数据权),create(创建数据库或数据库中的表权)等

  • 数据库或者数据库中的表

        *.*——所有数据库以及所有数据库中的表  

        数据库名字.*——该数据库下的所有表

        *.表名——所有数据库中的表的名字与该表名相同的表

  • 登录IP或域名

          %——表示没有限制,在任何主机都可以登录

          例如:192.168.120.%——表示在192.168.120.0网段可以登录

(1):新用户授权   

select  user,password,host  from mysql.user;     可以看见,并没有wangwu用户。现在新建一个wangwu用户并且给他赋予权限

grant  select,insert,update  on  fruitsdb.*  to 'wangwu'@'localhost'  identified  by  '123456';        对wangwu用户授予查看、插入、更新fruitsdb数据库中的所有表的权力

show  grants  for  'wangwu'@'localhost';       查看wangwu用户对fruitsdb数据库的权限 

可以看见,wangwu用户已经有了查询、插入、更新fruitsdb数据库的权力。

(2):老用户授权

先登录数据库,然后进入fruitsdb数据库。

show  grants  for  'lisi'@'localhost';       查看lisi用户对fruitsdb数据库的权限

grant  select,insert,update  on  fruitsdb.*  to 'lisi'@'localhost'  identified  by  '123456';        对lisi用户授予查看、插入、更新fruitsdb数据库中的所有表的权力

 grant  select,insert,update  on  fruitsdb.*  to 'lisi'@'localhost' ;        对lisi用户授予查看、插入、更新fruitsdb数据库中的所有表的权力(这两种方法都可以)

show  grants  for  'lisi'@'localhost';       再次查看lisi用户对fruitsdb数据库的权限

可以看见,lisi用户已经有了查询、插入、更新fruitsdb数据库的权力。

7.网络连接权限

grant  all  on  *.*  to  'wangwu'@'%';       授予wangwu用户对所有数据库的所有表具有所有权。%表示wangwu用户可以从任何主机进行登录。

show  grants  for  'wangwu'@'%';     查看wangwu用户的权限

从另一台Linux的Mysql客户端登录验证(这台客户机当然也要按照MySQL服务器)

mysql  -h  192.168.100.2  -P  3306  -u   wangwu  -p123456

-h指明主机;-P指明端口;-u指定用户;-p指明密码(-p和密码之间不能使用空格)。

发现可以从远程登录到MySQL服务器。(严格按照上面的登录格式)

8.撤销权限

revoke  all  on  *.*  from  'wangwu'@'%';      撤销wangwu用户的权限

 show  grants  for  'wangwu'@'%';       查看wangwu用户的权限

可以看见,wangwu用户没有了远程登录的权限。

FLUSH  PRIVILEGES;      刷新服务,使设置生效

从刚才那一台Linux的Mysql客户端登录验证

mysql  -h  192.168.100.2  -P  3306  -u   wangwu  -p123456

仍然可以登录。但是却没有了增删改查的权限。可以发现,现在登录上去看不见之间的fruitsdb数据库。说明权限已经被撤销。

如果不想让zhangsan用户进行登录,可以修改mysql.user中zhangsan账号的信息。使其host变为localhost。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值