阅读量:2
一、安装MySQL
- 在安装目录下使用下述命令更新软件包,无法更新记得加sudo
apt-get upgrade apt-get update
- 安装MySQL
apt-get install mysql-server
- 看网上的安装版本是会提示设置密码,但是在安装期间并没有弹出,因此默认密码为服务器登录密码
二、启动MySQL
- 开启MySQL服务
service mysql start
- 查看MySQL状态
service mysql status
- 确认是否启动成功
netstat -tap | grep mysql
- 进入MySQL Shell界面,无法进入使用sudo即可
mysql -u root -p
三、创建用户限制指定IP访问
- MySQL8.0后的版本IP访问方式已更改,找了好多资料才找到正确的创建方式。
- 查看当前数据库的登录用户权限表
use mysql; select Host,User from user;
- 创建用户并设置密码
CREATE USER 'test'@'192.XXX.XXX.XX' IDENTIFIED WITH mysql_native_password BY '123@#$';
其中:
test
为数据库用户名192.XXX.XXX.XX
为远程连接的IP地址,即可访问IP地址mysql_native_password
为加密规则123@#$
为数据库登录密码
- 给创建的账号加权限
GRANT ALL PRIVILEGES ON *.* TO 'test'@'192.XXX.XXX.XX';
指定权限则将ALL
改为SELECT DELETE UPDATE INSERT
等权限即可
- 一般来说,使用同一账号管理较为方便,因此需要设置新的IP地址, 则重复上面的步骤,用户名和密码均不需要更改,即账号、密码都相同,可访问的IP不同
- 刷新MySQL用户权限,要刷新才能使修改生效
FLUSH PRIVILEGES;
- 创建错误,可使用下述命令删除
drop user 'test'@'192.XXX.XXX.XX';
四、使用Navicat远程连接
- 具体步骤:菜单栏 —— 连接 ——MySQL
- 点击测试连接即可连接成功
五、Navicat无法连接服务器上的MSQL
- 使用常规方式连接,显示如下错误
- 使用SSH方式连接,显示如下错误
Lost connection to server at "handshake: reading initial communication packet"
修改思路如下:查看防火墙 - ping通 - 查看端口 - 设置数据库访问域
5.1 防火墙排查
- 查看防火墙规则
sudo iptables -L -n
- 本来想添加规则,发现无法重启防火墙规则库,一直显示如下报错
Unit iptables.service could not be found.
参考博主解法:解决 Ubuntu20.04 中的 Unit iptables.service not found 及 Unit file iptables.service does not exist 问题
原因:Ubuntu20.04中使用iptables-persistent进行管理,其能保存安全策略并在重新开机时读取。
下载软件包
apt-get install iptables-persistent
- 查看iptables状态,此时防火墙已开启
systemctl status iptables
- 开启服务
systemctl start iptables
- 关闭服务
systemctl stop iptables
【附:如何将端口与防火墙配合开放还待学习…因此,直接查看防火墙状态,关闭防火墙了】
5.2 查看端口是否能连接
- 使用本机(windows)的powershell查看是否可以连接3306端口
Test-NetConnection -ComputerName 192.168.XXX.XX -Port 3306
- 显然,结果是False
- 在服务器上查看端口是否开放
netstat -nltp | grep mysql
- 结果显示,Local Address的地址为127.0.0.1,即该端口对本地可见,对外不可见
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2919/mysqld
- 开启对外端口,输入下述命令,把文件中bind-address注释掉
vim /etc/mysql/mysql.conf.d/mysqld.cnf
- 重启MySQL
5.3 数据库有没有添加访问域
- 出现错误如下,显然是没有权限访问MySQL
Host '192.XXX.XXX.XX' is not allowed to connect to this MySQL server.
- 根据第三点查看是否设置了对应的访问域,没有添加即可