今天重新收拾了下服务器的msyql,还是好多坑,真的真的是泪流满面,昨天搞到10点,12点准备睡觉了还挣扎想看看为啥远程连不上mysql,太想哭了;
终于知道的记录和整理的重要性,现在立帖为证,好好哭一场~
1网上有很多教程,跟着他梭哈一下,但是注意,一般情况下 ubuntu18.4 安装的是msyql 5.7版本 ,我这边不全,这里主要介绍我踩的坑
sudo apt-mysget install ql-server
sudo apt-get install mysql-client
坑一:
- 查看账户情况
mysql -u root -p;
use mysql;
select user,host from mysql.user;
(用户root的访问权限为%,表示root用户既支持本地访问又支持远程访问。)
主要欧,可能有两个root,如果一个是local ,一个是%,一样不能远程连接,有种办法是不要两个名字一样,并且把 local也改为%,
不要有两个root,不然很容易接入的时候混淆,还有user的host改为‘%’,不然进不去,经常报错 root@localhost无法登陆 ,你会很奇怪是不是;
如果不小心设置了两个root,一个host是%,一个是local,但是每次ssh进mysql的root用的是local版的,密码也是这个,local只支持本地登录,host为%(可远程登录的)的密码却不是这个,所以navicat从权限和密码角度都进不去
UPDATE user SET Host='%' WHERE User='root' AND Host='localhost' ;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
update user set user = 'root2' where user = 'root' AND host = 'local';x)
flush privileges;
privileges 权限 如果不想授予所有权限可以在on 后面写 [ select 数据库名.表名 ],代表授予这个数据库下这个表的查询权限(这个是我查到的,没有试过)
关闭 mysql :exit
坑二:端口权限
A,注释掉绑定ip127.0.0.0 端口号改为3306
vim /etc/mysql/mysql.conf.d/mysqld.cnf
port = 3306 #bind-address = 127.0.0.1 #这里默认监听本地localhost
B, 防火墙开放 3306 端口
-- 查看防火墙的状态 命令: sudo ufw status
--如果没有安装可以使用命令安装命令: sudo sudo apt-get install ufw
--开启防火墙,命令: sudo ufw enable //开启防火墙
-- sudo ufw allow 22 //开放22端口
-- sudo ufw allow 3306 //开放22端口
-- sudo ufw allow 22 //开放22端口
-- 开启完成,需要重启防火墙生效命令: sudo ufw reload //重启ufw防火墙
-- 重启成功再查看防火墙的状态命令: sudo ufw status //查看防火墙的状态
C,腾讯云自己的安全策略设置
在诊断工具-端口实例中:
把 3306 端口出入站都加上
D,mysql本身root权限打开
a,前面也有说
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
b,vim /etc/mysql/mysql.conf.d/mysqld.cnf ,注释掉绑定ip127.0.0.0 端口号改为3306
port = 3306 #bind-address = 127.0.0.1 (#这里默认监听本地localhost )
E,完成了这些步骤后,应该是可以ping通了
ping ip地址
telnet ip地址 端口
telnet 有可能 用powershell 无法识别命令,这个是因为telnet服务没有打开(控制面板-程序-添加程序-启用window功能-telnet 服务端 勾选上 )
坑三:如果mysql登录不上,咋办:安装后root没有密码的进不去,两种办法:
1,用系统的内置密码,(注意root ,屏幕会内置密码的)
在这个文件里面有着MySQL默认的用户名和用户密码, 最最重要的是:用户名默认的不是root,而是debian-sys-maint sudo cat /etc/mysql/debian.cnf
2,先将mysql设置密码跳过,直接无密码root进入,然后设置密码,然后再将无密码设置注释掉(忘记密码做法也是这样)。
vim /etc/mysql/mysql.conf.d/mysqld.cnf
在 【mysqld】下面 加上:
skip -grant -tables
然后重启mysql
sudo service mysql restart
重新设置好msyql 密码后记得回来注释掉
无法连接的一些链接尝试:
1,https://blog.csdn.net/sinat_36053757/article/details/82934881
别以为结束了哦,进入mysql,可能设置字符类型 utf-8,这种的还要你半条命~摊手