mysql数据库的访问控制

来源:互联网 发布:js倒计时源代码 编辑:程序博客网 时间:2024/06/06 00:20

环境:Linux mysql 

当前用户:root

1.默认访问

mysql安装完成之后,默认是没有密码的,可使用命令“mysql”进入数据库,也可使用命令“mysql -uroot -p”登录,会提示输入密码,不用理会,直接enter即可。mysql安装后,有3个数据库MySQL,TEST,INFORMATION_SCHEMA。

其中,mysql数据库的user表记录了当前用户的权限信息。进入数据库命令行后,使用“use mysql;select host,user,password from user”命令,可查看user账号信息,如下所示:


默认情况下是没有密码的,而且可以以任何账号空密码登录,如“mysql -urr -p”,提示输入密码,直接跳过即可。

2.远程访问

默认情况下,数据库只能本地访问,是不支持远程进行访问的,但这明显不能满足项目的需要,项目中数据库不一定与服务在同一台机器上,所以需要对远程访问的数据库开启远程访问权限:进入mysql命令行,使用“use db”选择需要设置的数据库(后续如果新增数据库时,都需要执行grant,如果不想这么麻烦的每新增一个数据库就执行一次,可以不选择数据库直接执行“grant all on *.* to 'root' identified by 'root1234'”,这对所有数据库生效,不论是已经存在的还是将来要创建的),执行“grant all on * to 'root' identified by 'root1234'”,即root用户(密码为root1234)拥有对该数据库处理的所有权限,该命令执行完毕后,会在mysql数据库user表中产生一条记录,如下图所示


host(主机的意思)为"%",表示所有远程访问的主机。如果在执行grant命令前,mysql数据user表中已经存在Host为%,User为root的记录,则对其进行修改,否则新增一条记录。远程访问时,都使用图中最后一条记录来验证访问用户是否合法,不影响本地无密码访问。也可指定用户名与ip,如grant all on * to 'sel'@'10.10.10.79' identified by 'sel1234',则在user表中生成一条host为host为10.10.10.79,user为sel,密码为sel1234的记录。

3.密码访问

本地访问时,为了安全性上的考虑也可设置密码。密码的设置提供2种方式:

1)登入mysql命令行,“use mysql”选中mysql默认数据库,对其user表进行设置:

update user set password=PASSWORD(“要设置的密码”)where User = “root"

PASSWORD(“要设置的密码”)是对密码进行加密后存储到数据库(使用”update user set password=“要设置的密码”where User = “root" “是不加密的,不要使用)。这种方式设置后不会立即生效,需要重启数据库之后才能生效。

2)mysql密码为空时,可使用mysqladmin -uroot password ‘新密码’来修改密码;mysql密码不为空时,可使用mysqladmin -uroot -p password ‘新密码’ 来修改密码,这种方式修改密码后立即生效。
密码修改后,登录时直接输入"mysql"会报错,需使用命令“mysql -uroot -p”,提示输入密码,正确输入密码即可。


注:

如果对一个数据库执行了“grant all on * to 'root'@xx identified by 'root1234'”(产生ip为xx,user为root的记录),同时也对所有数据库执行了“grant all on *.* to 'root' identified by 'root1234'”(产生ip为%,user为root的记录),在这两种并存的情况下,以最严格的限制为主,即“产生ip为xx,user为root的记录”生效,所以后续新增数据库时,需要继续执行grant命令,才能被外界访问。


0 0
原创粉丝点击