基础环境

版本:mysql 5.7.33

系统:ubuntun0.18.04 

 

一、忘记密码问题

1、编辑配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,注意此为ubuntun的系统(centos系统对应的默认的文件为/etc/my.cnf)

vi /etc/mysql/mysql.conf.d/mysqld.cnf 

在[mysqld]的段中加上一句:skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables

 

 

 保存并且退出vi

(i—进入编辑,esc-退出编辑,:wq!—保存并退出)

2、重启mysql服务(每次更改配置文件生效,都需要重启mysql服务)

service mysql restart  

3、免密码登录:输入mysql -u root -p,然后直接回车

mysql -u root -p

4、重新设置密码,逐行执行以下命令

use mysql;
update mysql.user set authentication_string=password('新密码') where user='root'and Host ='localhost';
update user set plugin="mysql_native_password"; 
flush privileges;
quit;

 备注:退出mysql命令exit;及quit;

 

5、取消免密登录

回到 vim  /etc/mysql/mysql.conf.d/mysqld.cnf将刚才加入的那一行“skip-grant-tables”注释或删除掉。

 

5、重启mysql服务(每次更改配置文件生效,都需要重启mysql服务)

service mysql restart  

 

二、mysql远程不能登录问题

两种方式:

1、给指定ip配置远程访问权限

grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密码";

这相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,包括远程访问权限。

然后再输入

flush privileges;

这相当于是重新加载一下mysql权限,这一步必须有

 

2、给所有的远程ip配置远程访问权限

向user表新增user=root,host=%的数据

update user set host='%' where user='root';
flush privileges;
quit;

 或

grant all privileges on \*.* to root@'%'  identified  by 'root';
flush privileges;
quit;

回到 vim  /etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address改成0.0.0.0

 

 

 

3、重启mysql服务(每次更改配置文件生效,都需要重启mysql服务)

service mysql restart  

 

三、解决中文乱码

命令行登录mysql

1. 先来执行两条SQL,来检测下当前的MySQL默认字符集编码:

Sql命令:

mysql>show variables like "%colla%";

 

 

 

 Sql命令:

mysql>show variables like "%char%";

 

 

 

 2、修改配置文件

在[client]下加入代码:

default-character-set=UTF8

在[mysqld]下加入代码:

character_set_server=utf8

在[ mysql ]下加入代码:

default-character-set=utf8

注意:[mysql]、[client] 这两个内容很有可能是不存在的,你需要自己添加上去啊,而且,还要注意,[mysqld]这个配置选项中不能使用default-character-set=utf8这个信息的。

3、重启mysql服务(每次更改配置文件生效,都需要重启mysql服务)

service mysql restart  

 4、再次使用命令查看

 

 注意:原来的数据库表的字符集可能设置的不对,若以上操作没问题,但还是乱码,需要重新建一下数据库试试