一、忘记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; 看下图:
PNG
从图中可以看到在执行了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用户的字段改成功了。
PNG
退出之后返回执行第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;

results matching ""

    No results matching ""