重置MySQL数据库的root用户密码 当忘记MySQL的root密码的时候,可以进行如下的步骤重新设置MySQL的root密码: Linux的平台 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止相关服务以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Console上面操作,并且拔掉网线。2.修改MySQL的配置文件my.cnf 在[mysqld]的段中加上一句:skip-grant-tables例如:[mysqld]datadir=/test/mysql/datasocket=/var/lib/mysql/mysql.sock skip-grant-tables保存并且退出vi。 3.重新启动mysqld [root@bbs ~]# service mysqld restartShutting down MySQL.. SUCCESS! Starting MySQL... SUCCESS! 4.登录并修改MySQL的root密码 [root@bbs ~]# /usr/local/mysql/bin/mysqlWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 5.6.14 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> USE mysql;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -A
Database changedmysql> UPDATE user SET Password = password ('123456') WHERE User = 'root';Query OK, 4 rows affected (0.01 sec)Rows matched: 4 Changed: 4 Warnings: 0
mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)
mysql> quit Bye这样密码就被重置为123456了,想修改成什么密码都可以。 5.将MySQL的配置文件修改回来
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld
[root@bbs ~]# service mysqld restartShutting down MySQL.. SUCCESS! Starting MySQL... SUCCESS! 之后就可以开启服务,使用新密码来登陆mysql了。7.如果不想修改配置文件,直接使用命令也可以:先关闭mysql的所有进程方法一:#killall mysqld方法二:#ps -aux |grep mysql //查看所有mysql进程 #kill pid //pid是mysql的进程号然后输入如下命令 [root@bbs ~]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &后续操作同上边操作方法一样。 进入“mysql>”命令模式后,所有命令不区分大小写。 在 linux 下修改 存储路径 Linux mysql 更改数据存储路径,同样适合rpm安装的mysql 如果不知道mysql的存储位置,可先登录数据库查看相关安装信息: mysql> show variables like '%dir%';+-----------------------------------------------------+-----------------------------------------+| Variable_name | Value |+-----------------------------------------------------+-----------------------------------------+| basedir | /usr/local/mysql || binlog_direct_non_transactional_updates | OFF || character_sets_dir | /usr/local/mysql/share/charsets/ || datadir | /data/mysqldb/ || ignore_db_dirs | || innodb_data_home_dir | || innodb_log_group_home_dir | ./ || innodb_max_dirty_pages_pct | 75 || innodb_max_dirty_pages_pct_lwm | 0 || innodb_undo_directory | . || lc_messages_dir | /usr/local/mysql/share/ || plugin_dir | /usr/local/mysql/lib/plugin/ || slave_load_tmpdir | /tmp || tmpdir | /tmp |+----------------------------------------------------+------------------------------------------+ 从上面可知我们的数据是放在/data/mysqldb/,我的mysql的数据,是源码编译时指定到这里的,一定要查看自己的路径。 关闭mysql数据库,开始修改存储路径: [root@bbs ~]# service mysqld stopShutting down MySQL. SUCCESS! 假设新的数据存储路径为/test/mysql/data 1.更改新路径属组 chown mysql:mysql /test/mysql/data 2.将原数据全部拷贝到新路径 cp -a /data/mysqldb/* /test/mysql/data/ 3.更改启动脚本中的配置 vim /etc/rc.d/init.d/mysqld 修改完毕。重新启动 [root@bbs ~]# service mysqld startStarting MySQL..... SUCCESS!查看修改后的结果: mysql> show variables like '%dir%';+-----------------------------------------------------+-----------------------------------------+| Variable_name | Value |+-----------------------------------------------------+-----------------------------------------+| basedir | /usr/local/mysql || binlog_direct_non_transactional_updates | OFF || character_sets_dir | /usr/local/mysql/share/charsets/ || datadir | /test/mysql/data/ || ignore_db_dirs | || innodb_data_home_dir | || innodb_log_group_home_dir | ./ || innodb_max_dirty_pages_pct | 75 || innodb_max_dirty_pages_pct_lwm | 0 || innodb_undo_directory | . || lc_messages_dir | /usr/local/mysql/share/ || plugin_dir | /usr/local/mysql/lib/plugin/ || slave_load_tmpdir | /tmp || tmpdir | /tmp |+-----------------------------------------------------+------------------------------------------+ 修改成功,可以正常使用。注意: 有时还需要对my.cnf配置文件进行修改,不然mysql会起不来的。/etc/init.d/mysqld与my.cnf修改与否,要看自己的环境,根据实际情况进行修改。例如;在/etc/init.d/my.cnf中 [mysqld]datadir=/var/lib/mysql配置文件与我的启动脚本冲突,启动时会报错,虽然在启动文件里改过路径,但还是会有问题[root@bbs ~]# service mysqld startStarting MySQL......... ERROR! The server quit without updating PID file (/var/lib/mysql/bbs.test.pid). 这时候就必须修改才能正常启动。注意:以上命令直接复制粘贴,由于编码问题可能会无法执行,手工输入就可以正常执行了。
将刚才在[mysqld]的段中加上的skip-grant-tables删除
保存并且退出vi。
6.重新启动mysqld
[root@bbs ~]# service mysqld restartShutting down MySQL.. SUCCESS! Starting MySQL... SUCCESS! 之后就可以开启服务,使用新密码来登陆mysql了。7.如果不想修改配置文件,直接使用命令也可以:先关闭mysql的所有进程方法一:#killall mysqld方法二:#ps -aux |grep mysql //查看所有mysql进程 #kill pid //pid是mysql的进程号然后输入如下命令 [root@bbs ~]# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &后续操作同上边操作方法一样。 进入“mysql>”命令模式后,所有命令不区分大小写。 在 linux 下修改 存储路径 Linux mysql 更改数据存储路径,同样适合rpm安装的mysql 如果不知道mysql的存储位置,可先登录数据库查看相关安装信息: mysql> show variables like '%dir%';+-----------------------------------------------------+-----------------------------------------+| Variable_name | Value |+-----------------------------------------------------+-----------------------------------------+| basedir | /usr/local/mysql || binlog_direct_non_transactional_updates | OFF || character_sets_dir | /usr/local/mysql/share/charsets/ || datadir | /data/mysqldb/ || ignore_db_dirs | || innodb_data_home_dir | || innodb_log_group_home_dir | ./ || innodb_max_dirty_pages_pct | 75 || innodb_max_dirty_pages_pct_lwm | 0 || innodb_undo_directory | . || lc_messages_dir | /usr/local/mysql/share/ || plugin_dir | /usr/local/mysql/lib/plugin/ || slave_load_tmpdir | /tmp || tmpdir | /tmp |+----------------------------------------------------+------------------------------------------+ 从上面可知我们的数据是放在/data/mysqldb/,我的mysql的数据,是源码编译时指定到这里的,一定要查看自己的路径。 关闭mysql数据库,开始修改存储路径: [root@bbs ~]# service mysqld stopShutting down MySQL. SUCCESS! 假设新的数据存储路径为/test/mysql/data 1.更改新路径属组 chown mysql:mysql /test/mysql/data 2.将原数据全部拷贝到新路径 cp -a /data/mysqldb/* /test/mysql/data/ 3.更改启动脚本中的配置 vim /etc/rc.d/init.d/mysqld 修改完毕。重新启动 [root@bbs ~]# service mysqld startStarting MySQL..... SUCCESS!查看修改后的结果: mysql> show variables like '%dir%';+-----------------------------------------------------+-----------------------------------------+| Variable_name | Value |+-----------------------------------------------------+-----------------------------------------+| basedir | /usr/local/mysql || binlog_direct_non_transactional_updates | OFF || character_sets_dir | /usr/local/mysql/share/charsets/ || datadir | /test/mysql/data/ || ignore_db_dirs | || innodb_data_home_dir | || innodb_log_group_home_dir | ./ || innodb_max_dirty_pages_pct | 75 || innodb_max_dirty_pages_pct_lwm | 0 || innodb_undo_directory | . || lc_messages_dir | /usr/local/mysql/share/ || plugin_dir | /usr/local/mysql/lib/plugin/ || slave_load_tmpdir | /tmp || tmpdir | /tmp |+-----------------------------------------------------+------------------------------------------+ 修改成功,可以正常使用。注意: 有时还需要对my.cnf配置文件进行修改,不然mysql会起不来的。/etc/init.d/mysqld与my.cnf修改与否,要看自己的环境,根据实际情况进行修改。例如;在/etc/init.d/my.cnf中 [mysqld]datadir=/var/lib/mysql配置文件与我的启动脚本冲突,启动时会报错,虽然在启动文件里改过路径,但还是会有问题[root@bbs ~]# service mysqld startStarting MySQL......... ERROR! The server quit without updating PID file (/var/lib/mysql/bbs.test.pid). 这时候就必须修改才能正常启动。注意:以上命令直接复制粘贴,由于编码问题可能会无法执行,手工输入就可以正常执行了。