一、忘记MySQL密码
适用情形:忘记数据库密码;修改数据库密码(看第2步即可)
修改配置文件之前,一定先备份原有配置文件,在进行修改操作
cp -a /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak
1、修改mysql配置文件,实现MySQL免密登入
vim /etc/mysql/mysql.conf.d/mysqld.cnf\,进入到这个配置文件,然后只需在这个配置文件中的[mysqld]这一块最后一行加入skip-grant-tables这句话。
1 [mysqld]
2 #
3 # * Basic Settings
4 #
5 user = mysql
6 pid-file = /var/run/mysqld/mysqld.pid
7 socket = /var/run/mysqld/mysqld.sock
8 port = 3306
9 basedir = /usr
10 datadir = /var/lib/mysql
11 tmpdir = /tmp
12 lc-messages-dir = /usr/share/mysql
13 skip-external-locking
14 character-set-server=utf8
15 collation-server=utf8_general_ci
16 skip-grant-tables # 只需添加这一行
修改完成保存退出,重启MySQL,/etc/init.d/mysql restart
2、登入数据库,设置root密码
# mysql
mysql > use mysql;
mysql > update user set authentication_string=password("你的密码") where user="root";
mysql > flush privileges;
成功之后退出数据库
3、再次修改mysql配置文件,把刚开始加的skip-grant-tables这条语句给注释掉。
1 [mysqld]
2 #
3 # * Basic Settings
4 #
5 user = mysql
6 pid-file = /var/run/mysqld/mysqld.pid
7 socket = /var/run/mysqld/mysqld.sock
8 port = 3306
9 basedir = /usr
10 datadir = /var/lib/mysql
11 tmpdir = /tmp
12 lc-messages-dir = /usr/share/mysql
13 skip-external-locking
14 character-set-server=utf8
15 collation-server=utf8_general_ci
16 # skip-grant-tables # 此行新增注释,其余内容不动
重启数据库,返回终端,通过mysql -u root -p
进入数据库
ps.4、问题解决
如果此时还是报出错误,那么就需要返回step3中,把注释掉的那条语句重新生效(就是删除#符号),重新进入mysql中,use mysql;
然后输入select user, plugin from user;
看下图:
从图中可以看到在执行了select user, plugin from user;
后,错误原因是因为plugin root的字段是auth_socket,那我们改掉它,替换为mysql_native_password就行了。输入:
update user set authentication_string=password("密码"),plugin='mysql_native_password' where user='root';
然后回车执行以下,再输入select user,plugin from user;
回车,我们能看到root用户的字段改成功了。
退出之后返回执行第3步,即可
二、MySQL开启远程连接
情形:A机器要连B机器的MySQL 前提:B机器MySQL服务端口已加A机器白名单,具体操作请看防火墙与放行端口
1.改表法
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%"
mysql -u root -pvmware
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>flush privileges;
mysql>select host, user from user;