今天连接MySQL数据库,需要在数据里添加一些记录,提示拒绝远程连接,以前都是通过root账号连接的。
root账号有远程连接的权限,现在忘记了密码了。
首先停止mysql 使用命令 killall -TERM mysqld 结束进程
进入mysql安装目录 cd /usr/local/mysql/bin
[root@xianzhong bin]#ls
comp_err mysql_fix_extensions mysqld_multi
innochecksum mysql_fix_privilege_tables mysqld_safe
msql2mysql mysql_install_db mysqldump
my_print_defaults mysql_secure_installation mysqldumpslow
myisam_ftdump mysql_setpermission mysqlhotcopy
myisamchk mysql_tableinfo mysqlimport
myisamlog mysql_tzinfo_to_sql mysqlshow
myisampack mysql_upgrade mysqltest
mysql mysql_waitpid mysqltestmanager-pwgen
mysql_client_test mysql_zap mysqltestmanagerc
mysql_config mysqlaccess perror
mysql_convert_table_format mysqladmin replace
mysql_create_system_tables mysqlbinlog resolve_stack_dump
mysql_explain_log mysqlbug resolveip
mysql_find_rows mysqlcheck
输入 mysqld_safe --skip-grant-tables &
进入安全模式,需要按一个回车 。 这样root密码为空就能进入了。
mysql -u root -p
mysql>use mysql
mysql>grant all privileges on *.* to root@"%" identified by '111111' with grant option;
mysql>update user set password=password("111111") where user="root";
mysql>flush privileges;
mysql>exit
这样密码修改成 111111
我们可以通过修改 user表增加远程登录的权限
mysql>update user set host ='%' where user = 'root';
mysql>select host, user from user;
windows下也是一样, 执行命令
net stop mysql
mysqld-nt.exe --skip-grant-tables
通过sql语句修改。
mysql> select host, user from user;
+---------------+------+
| host | user |
+---------------+------+
| % | root |
| localhost | |
| localhost | root |
| xianzhong.net | |
| xianzhong.net | root |
+---------------+------+
5 rows in set (0.00 sec)