Linux下MySQL忘记超级用户口令的解决办法

解决办法一

MySQL忘记超级用户口令的解决办法 

如果MySQL正在运行,首先杀之: killall -TERM mysqld。

启动MySQL:

 代码如下 复制代码
bin/safe_mysqld --skip-grant-tables &

就可以不需要密码就进入MySQL了

然后就是

 代码如下 复制代码

>use mysql

>update user set password=password("new_pass") where user="root";

>flush privileges;

重新杀MySQL,用正常方法启动MySQL 。

解决方法二

最安全的状态是到服务器的Console上面操作,并且拔掉网线。
2.修改MySQL的登录设置:
# vi /etc/my.cnf
在[mysqld]的段中加上一句:skip-grant-tables
例如:

 代码如下 复制代码
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables
保存并且退出vi。

3.重新启动mysqld

 代码如下 复制代码
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]

4.登录并修改MySQL的root密码

 代码如下 复制代码
# /usr/bin/mysql
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3 to server version: 3.23.56
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> USE mysql ;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye

5.将MySQL的登录设置修改回来

 代码如下 复制代码
# vi /etc/my.cnf

将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld

 代码如下 复制代码
# /etc/init.d/mysqld restart
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]

方法三,利用phpmyadmin来修改

 恢复方法:

通过运行mysqld_safe 启动命令,跳过账号密码检查,这样不用账号、密码即可登陆数据库,从而可以重新设置mysql数据库的root超级账号、密码。

演示如下:

首先,用putty等ssh工具,登陆服务器,运行

01

 代码如下 复制代码

./etc/init.d/mysqld stop

 

service mysqld stop

把mysql停止,

接着,运行

/usr/bin/mysqld_safe --skip-grant-tables

启动mysql,这样运行后即可跳过权限检查。无需账号、密码即可登陆数据库,如下图:
 

最后,进入mysql库的user表,修改数据库root超级账号的密码,如下图;
 

请注意,在编辑root的页面中,password这一行的函数这项里要选择加密方式。
  修改后,重起服务器

时间: 2024-10-21 15:19:52

Linux下MySQL忘记超级用户口令的解决办法的相关文章

MySQL忘记超级用户口令的解决办法

mysql|解决 如果MySQL正在运行,首先杀之: killall -TERM mysqld. 启动MySQL:bin/safe_mysqld --skip-grant-tables & 就可以不需要密码就进入MySQL了. 然后就是 >use mysql >update user set password=password("new_pass") where user="root"; >flush privileges; 重新杀MySQ

linux下MYSQL常见两个错误的解决办法

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 解决方法: 1)默认的mysql.sock文件是在/tmp目录下.2)我们建立一个软连接,ln -s /tmp/mysql.sock  /var/lib/mysql/mysql.sock 问题2:Timeout error occurred trying to start MySQL Daem

MySQL忘记root密码的正确解决办法

mysql教程忘记root密码的正确解决办法 介绍的是mysql忘记root密码的正确解决办法,我们大家都知道在实际操作中忘记密码 是令人十分头疼的事情,以下就是针对这一问题给出的正确解决方案,望你在浏览之 后会收获不小. mysql忘记root密码解决办法: 在windows下: 打开命令行窗口,停止mysql服务: net stop mysql 启动mysql,一般到mysql的安装路径,找到 mysqld-nt.exe 来到该目录下: c:program filesmysqlmysql s

linux中mysql不能 REPAIR TABLE修复表解决办法

REPAIR TABLE语法 REPAIR TABLE `table_name` 修复表 REPAIR TABLE 用于修复被破坏的表 在linux中使用 REPAIR TABLE `table_name` pre_forum_thread 提示 xt.pre_forum_thread repair error 1 when fixing table xt.pre_forum_thread repair Error Can't change ownership of the file '/usr

linux下php添加zlib后页面乱码解决办法

在linux下php添加zlib后页面乱码的解决办法 原因: 在php.ini中 如果zlib.output_compression = On,那在程序中不就要再使用gzencode()压缩,不然就会呈现乱码. 解决办法: zlib.output_compression = Off 重启apache即可. zlib安装 1. 下载安装zlib http://www.gzip.org/zlib/ 解压tar包,进入目录执行命令: 1 ./configure && make &&

linux下mysql忘记root密码

倘若你一不小心忘了root密码,抑或像我一样误操作将root权限调到了最低,大可不必惊慌失措,采用如下步骤即可轻松找回密码: 方法一 1.以安全模式运行MySQL并跳过安全验证 /usr/bin/mysqld_safe --skip-grant-tables 2.以root身份登录MySQL  代码如下 复制代码 /usr/bin/mysql -uroot 3.重置.清空root密码    代码如下 复制代码 mysql> use mysql; mysql> update user set p

linux下mysql链接被防火墙阻止的解决方法_Mysql

vi /etc/sysconfig/iptables 在后面添加 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT service iptables restart 发现还是不行 最终发现记录要添加在 -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT 这一条前面 再次重启 OK

Linux下的vps被ddos攻击的解决办法

  连接vps 输入第一个命令 netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn 这里我们查看SYN_RECV这些,看他的连接数高不高,好几百,就有可能被ddos了 接下来追查是来自哪个ip发出syn的 指令:netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more 接下来继续看下,输入指令 net

Linux下cp -rf总是提示覆盖的解决办法

通常情况下使用cp -rf进行文件或者文件夹的管理时一般就不再提醒是否覆盖.然而在内网的一台机器上使用cp -rf却提示是否覆盖.难道和常用的命令不同? [root@xxxx test]# cp -rf ./files/ ./bak/ cp:是否覆盖"./bak/files/test.txt"? cp:是否覆盖"./bak/files/hh.txt"? cp:是否覆盖"./bak/files/child/child.txt"? 后来发现是别名引起