linux 关闭mysql免密码登录密码,mysql 修改root密码和禁用无密码登录配置

文章来源

文章消失,请看下方

MySQL修改root密码的4种方法

方法1:用SET PASSWORD命令

首先登录MySQL。

格式:mysql> set password for 用户名@localhost = password(‘新密码’);

例子:mysql> set password for root@localhost = password(‘123’);

方法2:用mysqladmin

格式:mysqladmin -u用户名 -p旧密码 password 新密码

例子:mysqladmin -uroot -p123456 password 123

方法3:用UPDATE直接编辑user表

首先登录MySQL。

mysql> use mysql;

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

mysql> flush privileges;

方法4:在忘记root密码的时候,可以这样

以windows为例:

1. 关闭正在运行的MySQL服务。

2. 打开DOS窗口,转到mysql\bin目录。

3. 输入mysqld –skip-grant-tables 回车。–skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。

4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。

5. 输入mysql回车,如果成功,将出现MySQL提示符 >。

6. 连接权限数据库: use mysql; 。

6. 改密码:update user set password=password(“123”) where user=”root”;(别忘了最后加分号) 。

7. 刷新权限(必须步骤):flush privileges; 。

8. 退出 quit。

9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

去掉MySQL无密码登录隐患

(1).给MySQL账号赋予其所需要的最小权限,避免为MySQL账号授予alter,grant权限

(2).删除匿名账号

匿名账号容易带来安全隐患,建议删除,执行如下SQL语句即可删除权限表中所有的匿名账号:

mysql>delete from mysql.user where user='';

mysql>delete from mysql.db where user='';

mysql>delete from mysql.tables_priv where user='';

mysql>delete from mysql.columns_priv where user='';

mysql>delete from mysql.procs_priv where user='';

(3).删除登录主机可以是任意主机的MySQL账号

登录主机为"%"或者空字符串的MySQL账户,容易带来安全隐患,建议删除,执行如下SQL语句即可删除权限表中登录主机为"%"或空字符串的MySQL账户。

mysql>delete from mysql.user where host='%' or host='';

mysql>delete from mysql.db where host='%' or host='';

mysql>delete from mysql.tables_priv where host='%' or host='';

mysql>delete from mysql.columns_priv where host='%' or host='';

mysql>delete from mysql.procs_priv where host='%' or host='';

(4).修改root账号的密码

root账号拥有MySQL服务实例最高的权限,数据库超级管理员root账号有必要定制修改root账号的密码,执行如下SQL来修改:

mysql>set password for root@'localhost'=password('newroot');

mysql>set password for root@'127.0.0.1'=password('newroot');

(5).修改root账号的账号名

安装MySQL时,MySQL将自动创建数据库超级管理员root账户,且该账户拥有对数据库的最高权限,数据库超级管理员有必要对自己重命名,执行如下SQL来修改:

mysql>rename user root@'localhost' to newroot@'localhost';

mysql>rename user root@'127.0.0.1' to newroot@'127.0.0.1';

(6).修改MySQL服务的端口号

默认情况下,MySQL使用3306端口号为MySQL客户端提供MySQL服务,将端口号修改为其它端口号,可以避免非法用户远程连接MySQL服务器,Linux系统可以通过

修改my.cnf配置文件[mysqld]选项组"port=3306"的参数值来完成

(7).禁止远程连接

向my.cnf或my.ini(windows平台)配置文件[mysqld]选项组添加参数信息"bind_address=127.0.0.1",告诉MySQL服务器只能监听来自"127.0.0.1"或者"localhost"本地主机的连接请求,禁止远程连接。

(8).为远程连接的数据库用户提供安全的账号名、密码和连接主机。

(9).禁止MySQL读取MySQL客户机本地文件

使用"load data local infile"命令可以将MySQL客户机的本地文件导入MySQL数据库表中,如果非法用户

通过该命令将非法信息导入到MySQL系统的数据库权限表中,后果不堪设想。数据库可以在my.cnf或my.ini

配置文件[mysqld]选项组中添加"local_infile=0"参数信息来禁止MySQL读取MySQL客户机本地文件。

(10).除非必要,避免为MySQL账户授予file权限,防止数据库用户在MySQL服务器上创建file

说明:如果某个MySQL账号需要执行"select..into..outfile"命令完成数据库的备份工作,那么该账户需要授予file权限

MySQL安全管理的其他注意事项:

(1).当删除对象时,MySQL不会去清理那些旧权限,这些旧权限会一直留在那里。如果未来的某个时候又以同样的名字创建了该对象,那么这些权限依旧有效。

(2).避免使用insert,update,delete等更新语句直接操作权限表

(3).由于MySQL没有提供用户组或角色这样的功能,命名MySQL账户名时,可以在账户名中添加后缀或者前缀(例如复制账号添加"_replication"后缀),使用这种方法可以通过通配符批量修改用户权限,模拟实现用户组或角色功能。

(4).由于MySQL服务实例的"管理"权限,例如shutdown,process,show databases,super,create user,create tablespace等权限,功能太强大,建议将拥有这些权限的MySQL账号限制在一台单独的主机上使用.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值