基础环境
版本: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、再次使用命令查看
注意:原来的数据库表的字符集可能设置的不对,若以上操作没问题,但还是乱码,需要重新建一下数据库试试