如果使用 MySQL 数据库忘记了root账号密码,可以通过调节配置文件,跳过密码的方式登数据库,
在数据库里面修改账号密码,一般默认的账号是 root
1、编辑 MySQL 配置文件 my.cnf
注意: 以实际 my.cnf 配置文件路径为准
vim /etc/my.cnf
[mysqld]
spik-grant-tables #增加2、重启 MySQL 服务
注意:以实际 MySQL 启动脚本路径为准
/etc/init.d/mysqld restart
若报错,注意观察my.cnf配置文件中的内容
3、登陆数据库
/usr/bin/mysql 输入如下命令:
注意:以实际 MySQL 执行文件路径为准
mysql> USE mysql;
mysql> UPDATE user SET Password = password ('新密码') WHERE User = 'root' ; mysql> flush privileges ; mysql> quit4、删除或者注释第一步骤中添加的 spik-grant-tables
5、重启 MySQL 服务
/etc/init.d/mysqld restart
6、使用新密码测试
特殊情况:
我这是使用源码安装的mysql,默认配置文件my.cnf(/usr/local/mysql/my.cnf)中的内容都没有配置,都是在启动文件mysqld(/etc/rc.d/init.d/mysqld)中进行配置的
datadir=/data/mysql
basedir=/usr/local/mysql
若按照上述方法进操作,在my.cnf中添加"spik-grant-tables",则重启mysql时报错
正确的解决方法:
根据启动文件mysqld中的datadir和basedir参数相应的启用my.cnf中的选项,然后再添加"spik-grant-tables",mysql重启就不会报错,也能正常按照下面的步骤进行
未修改前的my.cnf
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M# spik-grant-tables# Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin# These are commonly set, remove the # and set as required.# basedir = .....# datadir = .....# port = .....# server_id = .....# socket = .....# Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
修改后的my.cnf
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M# spik-grant-tables# Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin# These are commonly set, remove the # and set as required.basedir = /usr/local/mysqldatadir = /data/mysqlport = 3306# server_id = .....# socket = .....skip-grant-tables # Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
然后再重启mysql,进行下面的步骤,重置密码后,再把my.cnf中的修改的那四项全部注释掉,再次重启mysql即可。
来源: