方法一:
MySQL 提供跳过访问控制的命令行参数, 通过在命令行以此命令启动 MySQL 服务器:
safe_mysqld --skip-grant-tables&
即可跳过 MySQL 的访问控制, 任何人都可以在控制台以管理员的身份进入 MySQL 数据库.
需要注意的是在修改完密码以后要把 MySQL 服务器停掉重新启动才会生效
方法二:
可以进行如下的步骤重新设置 MySQL 的 root 密码:
1.首先确认服务器出于安全的状态, 也就是没有人能够任意地连接 MySQL 数据库.
因为在重新设置 MySQL 的 root 密码的期间, MySQL 数据库完全出于没有密码保护的
状态下, 其他的用户也可以任意地登录和修改 MySQL 的信息. 可以采用将 MySQL 对
外的端口封闭, 并且停止 Apache 以及所有的用户进程的方法实现服务器的准安全
状态. 最安全的状态是到服务器的 Console 上面操作, 并且拔掉网线.
2.修改 MySQL 的登录设置:
# vi /etc/my.cnf
在 [mysqld] 的段中加上一句: skip-grant-tables
例如:
- [mysqld]
- datadir=/var/lib/MySQL
- socket=/var/lib/MySQL/MySQL.sock
- skip-name-resolve
- 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 ]
- Windows
1. 以系统管理员身份登陆系统.
2. 打开 cmd--net start 查看 MySQL 是否启动. 启动的话就停止 net stop MySQL.
3. 我的 MySQL 安装在 d:\usr\local\mysql4\bin 下.
4. 跳过权限检查启动 MySQL.
d:\usr\local\mysql4\bin\mysqld-nt -skip-grant-tables
5. 重新打开 cmd. 进到 d:\usr\local\mysql4\bin 下:
d:\usr\local\mysql4\bin\mysqladmin -uroot flush-privileges password "newpassword"
d:\usr\local\mysql4\bin\mysqladmin -u root -p shutdown 这句提示你重新输密码.
6. 在 cmd 里 net start MySQL
7. 搞定了.
2,MySQL4.1 以上版本一种密码错误问题的解决方法
- # SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
- # FLUSH PRIVILEGES;
3,MySQL 数据库修复
myisamchk -r -q d:\MySQL\data\latin1\*
r 代表修复
q 代表快速
d:\MySQL\data\latin1\* 数据库里面 * 代表里面的所有的文件
方法三:
如果你忘记了你的 MySQL 的 root 口令的话, 你可以通过下面的过程恢复.
1. 向 mysqld server 发送 kill 命令关掉 mysqld server(不是 kill -9), 存放进程 ID 的文件通常在 MySQL 的数据库所在的目录中.
kill `cat /mysql-data-directory/hostname.pid`
你必须是 UNIX 的 root 用户或者是你所运行的 SERVER 上的同等用户, 才能执行这个操作.
2. 使用 `--skip-grant-tables' 参数来启动 mysqld.
3. 使用 `mysql -h hostname mysql'命令登录到 mysqld server , 用 grant 命令改变口令. 你也可以这样做:`mysqladmin -h hostname -u user password'new password''.
(其实也可以用 use MySQL; update user set password =password('yourpass') where user='root' 来做到.)
4. 载入权限表: `mysqladmin -h hostname flush-privileges', 或者使用 SQL 命令 `FLUSH PRIVILEGES'.(当然, 在这里, 你也可以重启 mysqld.)
方法四:(一定要先备份)
1, 重新在另一台电脑上安装相同版本的 MySQL
2, 删除忘记密码的电脑中 MySQL 安装目录中 \ data\MySQL 的全部内容(要先停止 MySQL 服务)
3,Copy 新装的电脑上 MySQL 安装目录中 \ data\MySQL 的全部内容 to 刚刚删除的目录中
4, 启动 MySQL 服务
这样就只有一个 root 用户了, 密码为空......
来源: http://blog.csdn.net/database/newarticle.html