您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

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

时间:11-21来源:作者:点击数:

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。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门