MySQL操作问题汇总
1.无法远程连接Ubuntu的MySQL
(1) 需要检查防火墙状态
> sudo ufw status
#如果防火墙开启的情况,添加规则:允许3306端口开启
> sudo ufw allow 3306
(2) 需要检查mysql的运行状态
> sudo systemctl status mysql
#或者
> sudo service mysql status
(3) MySQL默认只允许本地连接:localhost,需要检查
> sudo netstat -plnt | grep mysql
0.0.0.0:表示监听所有网段
127.0.0.1:表示监听localhost
提示:MySQL默认只允许本地连接:localhost
解决:
#1.修改配置文件
#/etc/mysql/mysql.conf.d/mysqld.cnf
> cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak
> sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
> #bind-address = 127.0.0.1 注释此行
> #或者 添加:
> bind-address = 0.0.0.0
#2.重启mysql
> sudo systemctl restart mysql
(4) 需要检查mysql的root用户的远程连接权限
提示:mysql的root用户默认只有localhost的连接权限
#root用户登录
> mysql -u root -p
#登录成功后查看mysql.user表的相干记录,如下图所示,可以发现当前root用户属于默认情况
> use mysql
> select user,host from mysql.user;
localhost:表示该用户只具备localhost的连接权限
%:表示该用户只具备任何远程主机的连接权限
解决:
#创建支持远程主机连接的root用户
> create user 'root'@'%' identified by '123456';
#授权此root用户所有权限
> grant all privileges on *.* to 'root'@'%';
#刷新
> flush privileges;
2.ubuntu忘记mysql的root密码时的操作
(1) 查看mysql自带用户和密码
> sudo cat /etc/mysql/debian.cnf
(2) 使用自带用户debian-sys-maint登录
> sudo mysql -u debian-sys-maint -p
(3) 登录mysql后,修改mysql密码
> alter user 'root'@'localhost' identified by "123456";
#或者
> alter user 'root'@'localhost' identified with caching_sha2_password by '123456';
(4) 刷新权限
> flush privileges;