经验之谈-MySQL密码问题!

先说说常用的修改MySQL用户密码常用的的几种方式:

1、mysqladmin -u root password "newpass"

如果已经配置了密码:

mysqladmin -uroot -prenzhiyuan password ‘123456‘


2、用SET PASSWORD命令

mysql> SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘renzhiyuan‘);

Query OK, 0 rows affected (0.00 sec)

mysql>


3、UPDATE

mysql> UPDATE user SET Password = PASSWORD(‘123456‘) WHERE user = ‘root‘;

Query OK, 4 rows affected (0.00 sec)

Rows matched: 4  Changed: 4  Warnings: 0

mysql>


查看:

mysql> select user,host,password from user;

+--------+---------------+-------------------------------------------+

| user   | host          | password                                  |

+--------+---------------+-------------------------------------------+

| root   | localhost     | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| root   | 127.0.0.1     | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

 +--------+---------------+-------------------------------------------+

5 rows in set (0.00 sec)

mysql>


MySQL在其内部是不存放用户的明文密码的,基本安全算是满足了。MySQL实际上是使用了两次SHA1夹杂一次unhex的方式对用户密码进行了加密,因此一般来说密文是通过不可逆加密算法得到的。这样即使敏感信息泄漏,除了暴力破解是无法快速从密文直接得到明文的。

mysql> select password(‘mypassword‘),concat(‘*‘,sha1(unhex(sha1(‘mypassword‘))));

+-------------------------------------------+---------------------------------------------+

| password(‘mypassword‘)                    | concat(‘*‘,sha1(unhex(sha1(‘mypassword‘)))) |

+-------------------------------------------+---------------------------------------------+

| *FABE5482D5AADF36D028AC443D117BE1180B9725 | *fabe5482d5aadf36d028ac443d117be1180b9725   |

+-------------------------------------------+---------------------------------------------+

1 row in set (0.47 sec)

mysql> 


那么问题来了?不安全因素是什么?

1、MySQL的历史命令记录:

[[email protected] ~]# cat .mysql_history 

SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘renzhiyuan‘);

show databases;

use mysql;

select host,password,user from user;

grant all on *.* to [email protected]‘192.168.1.243‘ identified by ‘renzhiyuan‘;

flush privileges;

show databases;

flush privileges;

[[email protected] ~]#


2、查看binlog可以查到明文密码(5.6后版本进行了修复)

3、可以通过授权表直接越过密码。


4、明文登陆mysql等。


......


既然这样?如何有效的保护mysql的密码呢?


1、选择合适的版本(比如5.6.x)


2、登陆MySQL的时候,要禁止明文,防止别人通过历史命令查看。


3、管理好mysql的历史命令文件(默认在用户的.mysql_history下


4、MySQL用户权限要慎重给,mysql相关核心文件权限要设置好,比如my.cnf,启动文件等


5、日志记录,行为审计

......

总结:所谓的用户名和密码无非是个正门而已,不要以为其很安全。不过相应的安全维护则是必须的!

时间: 2024-10-11 07:50:30

经验之谈-MySQL密码问题!的相关文章

Ubuntu忘记MySQL密码重设方法

====================忘了mysql密码,从网上找到的解决方案记录在这里==================== 结束当前正在运行的mysql进程 # /etc/init.d/mysql stop 用mysql安全模式运行并跳过权限验证 # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 用空密码方式使用root用户登录 MySQL #  mysql -u root mysql 更新密码 # up

破解并重置mysql密码

-破解并重置mysql密码 密码这东西,总有忘记的时候,或者是一下子没有记录下来,或者是上一手交接的时候根本没人跟你说,或者是老旧到连老领导也忘记的数据库,问题是该用还是得用,那就把它破解了呗. #先关闭mysql service mysqld stop #进入安全模式,可以免密码登录 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking& #免密码登陆 /usr/local/mysql/bin/mysql 

如何修改Xampp服务器上的mysql密码

今天自己在搞php的过程中发现,如果我们使用Xampp服务器自带数据库mysql,就必须先修改mysql的密码,大家都知道,mysql的初始面为空,但是如果连接数据库是密码为空就会报错,在网上查找了很多解决类似问题的办法,都是打开mysql的命令控制台,解决办法如下图 但是按照网上的说法,顺着步骤坐下来还是有问题,mysql的密码还是没有修改,接下来我将为大家介绍自己修改成功的步骤: 1.点击MySQL的admin进入phpMyAdmin页面: 2.点击账户,进入账户管理页面: 3.选中root

通过命令修改wampserver的mysql密码

WAMP安装好后,mysql教程密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作. 首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按回车. 然后输入“use mysql”,意思是使用mysql这个数据库教程,提示“Database changed”就行. 然后输入要修改的密码的sql语句“update user set password=PASSWORD('hooray') where user='root';”,注意,sql语

mysql密码设置及重置方法

mysql密码设置及重置方法 作者 :小刘 今天这篇文章,我们来看下mysql数据库的密码设置,当我们不小心忘记了root密码,是一件很糟糕的事情,希望此文章可以帮助大家,我们先从设置密码开始吧!我们刚安装好的mysql数据库,默认root的密码为空,这时我们可以用一下命令设置密码mysqladmin -u root password "密码"如图(为root设置密码为123456)  如果你知道原来的旧密码,我们就可以用下面的命令直接更改就可以了mysqladmin -u root

mysql密码重置

mysql密码重置 mysql 密码忘记了怎么办?!下面步骤是如何重置mysql的密码: 1.打开mysql的配置文件,命令:vim /etc/my.cnf .在配置文件中新增一行 skip-grant,结果如下图所示: 2.保存并退出! 3.重启mysqld,命令:service mysqld restart 4.mysql -uroot进入,use mysql:#使用mysql库update user set password='123'where user='root': #更改user这

重置mysql密码

很常见的一种情况,就是需要重置mysql密码 1.vim /etc/my.cnf 添加: skip-grant 2.重启mysql服务 /etc/init.d/mysql restart 3.登录重置密码 #mysql -uroot  直接进入mysql mysql> use mysql Database changed mysql> update user set password="passwd" where user="root"; Query O

linux系统mysql密码修改脚本

编写了一个适用于阿里云linux系统 mysql密码修改脚本,使用阿里云提供的一键安装包配置后,如果account.log文件删除,并且忘记mysql密码时,可以通过脚本来重置mysql密码. 附:一键环境安装包:http://help.aliyun.com/view/11108189_13435438.html?spm=5176.7224445.1997283057.5.RLNWqv 下载地址: gbk版:默认使用这个版本 wget http://jinxiang.oss-cn-hangzho

关于 MySQL 密码你应该知道的那些事

关于 MySQL 密码你应该知道的那些事 提交 我的评论 加载中 已评论 关于 MySQL 密码你应该知道的那些事 2015-07-23 Linux中国 Linux中国 Linux中国 微信号 linux-cn 功能介绍 面向Linux爱好者,提供Linux技术文章.新闻资讯和交流平台. 每天推送一条最新精选Linux资讯和技术文章:支持Linux命令查询.Linux资讯搜索及微信群的交流. 本文将介绍MySQL用户密码相关的一些知识,以及5.6中对于安全性的一些改进 MySQL用户密码是如何生