[实践OK]mysql root 忘记密码强力修改 修改密码,Linux下MySQL 的root的密码忘记的解决办法,修改mysql密码的方法,给mysql的root空密码加上密码,localhost能连接127.0.0.1不能连接的授权命令。

jackxiang 2009-11-23 09:38 | |
/etc/my.cnf
#skip-grant-tables=on
update mysql.user set authentication_string=password('MyNewPass') where user='root'; #成功
select host,user,authentication_string from mysql.user;
+-----------+-----------+-------------------------------------------+
| host      | user      | authentication_string                     |
+-----------+-----------+-------------------------------------------+
| localhost | root      | *xxx |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| 127.0.0.1 | root      | *xxx |
+-----------+-----------+-------------------------------------------+
mysql db_eladmin < /tmp/db_eladmin.sql

在打开skip-grant-tables后,这些语句在mysql-5.7基本上用不上了:
mysql> show grants;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Asdfjkl;711');
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql修改root密码:

cat /root/.my.cnf
[client]
user=root
password=111111


问题一:Linux下MySQL 的root的密码忘记的解决办法加上  --skip-grant-tables, 重新设置密码:

重新正常启动提示并解决办法如下,改密码为一样还是不行的登录不了 了,这块最新的版本可能是作了安全防范吧:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by 'mysql';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> exitBye

再次提示修改密码和原密码一致进不了了怎么办?出现:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY '123' WITH GRANT OPTION;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

这个时候我们只需要flush privileges 一下,在添加用户就OK了,

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
alter user 'root'@'localhost' identified by 'mysql';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost',出现:MYSQL ERROR 1396 (HY000) 错误的解决办法 http://blog.sina.com.cn/s/blog_439f80c40100yoln.html

ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost',惹毛我了,我直接从其它机器上拷贝一个db目录带mysql表的过来,O了:scp -r mysql root@10.44.150.187:/data/.
[root@iZ25z0ugwgtZ data]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.11-log MySQL Community Server (GPL)


localhost能连接127.0.0.1不能连接的授权命令。
Warning: mysqli_connect(): (HY000/1130): Host '127.0.0.1' is not allowed to connect to this MySQL server
mysql> grant all privileges on jackX_mysql.* to jackX@"127.0.0.1" identified by "jackX2016";
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

[root@iZ25z0ugwgtZ config]# mysql -h127.0.0.1 -ujackX -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.11-log MySQL Community Server (GPL)

mysql> \q
Bye
——————————————————————————————————————————————————————————
这样的:
一、RPM包的安装方式:
    1.关闭MySQL服务
     /etc/init.d/mysqld stop
    2.修改MySQL的启动文件
     vi /etc/init.d/mysqld
     找到Start(){   \\大概在43行左右
     让后在下行加入
     /usr/bin/mysqld_safe --skip-grant-tables --datadir="$datadir" --socket="$socketfile" --log-error="$errlogfile" --pid-file="$mypidfile
     其中加入--skip-grant-tables的意思是启动MySQL服务的时候跳 过权限表认证。启动后,连接到MySQL的root不需要口令
     3.重新启动MySQL服务
      /etc/init.d/mysqld start
     4.修改root用户密码
     #mysql
     mysql>update mysql.user set password=password('新密码')
         ->where user=root;
     mysql> flush privileges;
     mysql> quit
     5.把/etc/init.d/mysqld 改回原状重新启动mysql 就可以使用新密码登陆了。
     6.重新启动mysql 就可以使用新密码登陆了。
二、如果是源代码编译安装的话
     1.stop数据库
     service mysqld stop
     2.找到源代码编译安装的路径我的是/usr/local/mysql
      #cd /usr/local/mysql
      #bin/mysqld_safe --skip-grant-tables &
     3.启动之后就可以不需要密码进入mysql了
      #mysql
      mysql>use mysql;
      mysql>update user set password=password('new_password')
          ->where user='root';
      mysql>flush privileges;
     4.重启mysql,就可以用新密码登陆了。

其实最主要的就是在启动的时候要加上--skip-grant-tables 这样就可以实现无密码登陆了。
    
                           祝大家好运!!!
摘自:http://blog.chinaunix.net/uid-23397996-id-115499.html



问题二:相关直接修改Mysql的密码问题答疑
问:password=password("new_pass")   等号后为什么要加password?
答:后面那个password应该是个加密函数,用来加密你输入的密码
-------------MYSQL安装问题无密码,如何添加密码?---------------
没有密码为MYSQL加密码:
mysql -uroot -p
回车
提示输入密码,为空回车
update mysql.user set password=PASSWORD('122198') where user='root';
刷新权限表,输入如下命令
flush privileges;
退出
quit
------------------------实践如下:---------------------------------------------------------
mysql> update mysql.user set password=PASSWORD('WXXXXX5v') where user='root';      
Query OK, 4 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)
MYSQL 修改root密码命令
------------------------------------------------------------------------------------------------
cmd下切换到 mysql 安装目录

d:/mysql/bin
前提:mysql用户root密码为空.
输入 mysql -u root mysql
mysql> 状态下输入 update user set password=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.00 sec)
mysql> 状态下输入 quit
退出 sql
注意每个命令后都要加上一个分号 ";"
mysql 才开始执行该行命令
而第二个指令会让已载入记忆体的 mysql 系统资料库更新
重起 mysql .
在更新 root 密码後,日後要与 MySQL 连线的方法为:
mysql -uroot -p新密码
==================================================
忘记mysql 的root 密码:
先确认已经杀掉mysqld 进程了,然后执行这个
/usr/bin/safe_mysqld --skip-grant-tables &
再这样登录
mysql -h 192.168.1.2 -u root
上边的192.168.1.2 是cloud 的mysqld 运行机器,你换成自己的,这样登录上
去,就可以修改密码了。
修改密码
1.mysql -h hostname –u root 命令登录到mysqld server 用grant 命令改变口令:
grant all privileges on DBNAME.* to USERNAME@localhost identified by 'PASSWORD'
2. mysqladmin -u 用户名-p 旧密码password 新密码
例1:给root 加个密码ab12。首先在DOS 下进入目录mysqlbin,然后键入
以下命令
mysqladmin -uroot password ab12
注:因为开始时root 没有密码,所以-p 旧密码一项就可以省略了。
2、例2:再将root 的密码改为djg345。
mysqladmin –u root -pab12 password djg345 (注意-p 不要和后面的密码分
开写,要写在一起)
3.
use mysql; update user set password =password('yourpass') where user='r
oot'
4. 载入权限表: `mysqladmin -h hostname flush-privileges' ,或者使
用SQL 命令`FLUSH PRIVILEGES'。(当然,在这里,你也可以重启mysqld。)
mysql 的建库,添加数据方法:
mysqi –u root
mysql>create database ttt;
mysql>source 1.txt
mysql>load data local infile "2.txt" into table board;
1.txt 内容:
CREATE TABLE board (
boardid int(11) NOT NULL auto_increment,
boardname char(255),
PRIMARY KEY (boardid)
); ......




-------------------------------------------------------------------------------------------------------------
1. 使用phpmyadmin,这是最简单的了,修改mysql库的user表,不过别忘了使用PASSWORD函数。
2. 使用mysqladmin, mysqladmin -u root -p password mypasswd
3. mysql> REPLACE INTO mysql.user (Host,User,Password) VALUES('%','username',PASSWORD('password'));
mysql> FLUSH PRIVILEGES
4. mysql> SET PASSWORD FORusername@"%" = PASSWORD('password');
这里的username是要修改的用户名称。
5. mysql> GRANT USAGE _disibledevent='mailto:username@"%'>username@"%" IDENTIFIED BY 'password';
这里的username是要修改的用户名称。  

    最后找到了修改遗失的MySQL的ROOT用户密码,嘿嘿好使了

如果忘记了 MySQL 的 root 密码,可以用以下方法重新设置:


1. KILL掉系统里的MySQL进程;

2. 用以下命令启动MySQL,以不检查权限的方式启动;

mysqld_safe -skip-grant-tables &

3. 然后用空密码方式使用root用户登录 MySQL;

mysql -u root

4. 修改root用户的密码;
mysql> update mysql.user set password=PASSWORD('新密码') where User='root';
mysql> flush privileges;
mysql> quit

5. 重新启动MySQL,就可以使用新密码登录了。

添加
可以设置同一个用户在不同的ip限定下,不同密码来访问,如:root,可以在192.168.38.70上访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.38.70' IDENTIFIED BY 'ads_root';
FLUSH PRIVILEGES;

也可以在其他机器上访问:root,可以在192.168.38.30上访问:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.38.30' IDENTIFIED BY 'ads_root';
FLUSH PRIVILEGES;

就是统一用户,但授权访问密码可以不同,也可以相同,但IP段不同。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2260/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2020-7-27 18:35
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]