- A+
所属分类:MySQL
1. 首先停止mysql
单实例:
- /etc/init.d/mysqld stop
多实例:
- [root@db01 /]# ps -ef|grep 3306 // 找到进程号,将其杀掉,如果能stop则最好不用kill
- root 22701 10 13:45 pts/0 00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf
- mysql 23423 22701 0 13:45 pts/0 -------------内容省略-------
- [root@db01 /]# kill 23423
- [root@db01 /]# ps -ef|grep 3306
2. 使用 —skip-grant-tables 启动 mysql 并登录,忽略授权登录验证。
单实例:
- [root@db01 /]# mysqld_safe --skip-grant-tables --user=mysql &
- [root@db01 /]# mysql // 登录时空密码
- // 说明:在启动时加--skip-grant-tables参数,表示忽略授权表验证
多实例:
- // 如下命令启动mysql
- [root@db01 /]# mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables >/dev/null 2>&1 &
- [root@db01 3306]# ss -lntup|grep 3306 // 查看是否启动成功
- [root@db01 /]# mysql -S /data/3306/mysql.sock // 启动成功后就可以不用密码登录咯!!!
- mysql>
3. 在数据库中修改密码
单实例/多实例
- mysql> UPDATE mysql.user SET password=PASSWORD("123456") WHERE user='root' and host='localhost'; // 将密码修改为123456
- Query OK, 0 rows affected (0.00 sec)
- Rows matched: 1 Changed: 0Warnings: 0
- mysql> flush privileges; // 刷新数据库表
- Query OK, 0 rows affected (0.00 sec)
4. 退出使用新密码重新登录
单实例
- mysql> quit // 退出
- Bye
- [root@db01 /]# mysql -uroot -p123456 // 重新登录
- mysql> // 成功!!!
多实例
- mysql> quit // 退出
- Bye
- [root@db01 /]# mysql -uroot -p123456 -S /data/3306/mysql.sock // 重新登录
- mysql> // 成功!!!
5. 最后重启一下(以下以单实例重启说明),当通过以上修改密码后,使用ps命令查看进程时 --skip-grant-table 参数还存在,所以要将刚改密的数据库重启没具体操作如下:
- [root@db01 /]# ps -ef|grep 3306 // 当前存在--skip-grant-table参数
- root 24051 163330 15:56 pts/0 00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table
- mysql 24788 240510 15:56 pts/0 00:00:00 /mysql-5.5.49/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/application/mysql --datadir=/data/3306/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --skip-grant-table --log-error=/data/3306/mysql_oldboy3306.err --open-files-limit=1024 --pid-file=/data/3306/mysqld.pid --socket=/data/3306/mysql.sock --port=3306
- root 24851 163330 16:13 pts/0 00:00:00 grep 3306
- [root@db01 /]# /data/3306/mysql stop // 停掉
- Stoping MySQL...
- [root@db01 /]# /data/3306/mysql start // 启动
- Starting MySQL...
- [root@db01 /]# ps -ef|grep 3306 // 下面没有该参数,操作成功
- root 24863 11 16:14 pts/0 00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf
- mysql 25585 248631 16:14 pts/0 00:00:00 /mysql-5.5.49/bin/mysqld --defaults-file=/data/3306/my.cnf --basedir=/mysql --datadir=/data/3306/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/data/3306/mysql_oldboy3306.err --open-files-limit=1024 --pid-file=/data/3306/mysqld.pid --socket=/data/3306/mysql.sock --port=3306
- root 2560416333 0 16:14 pts/0 00:00:00 grep 3306