话不多说直入正题。
注意这里使用的是 Ubuntu 系统。
安装
命令如下:
# 先执行这个
sudo apt update
# 再执行这个
sudo apt install mysql-server
装完以后,如何登录 mysql 呢?
对于网上购买的云服务器(Linux系统)来说,经验是直接使用 root 作为用户名,然后使用服务器的登录密码登录即可 mysql 即可。
远程访问时的通用设置
设置MySQL配置文件,将服务器地址改为任意IP
输入命令:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
打开后找到下面这行圈出来的代码的位置:
将其注释或者将其地址从 127.0.0.1
改为 0.0.0.0
。
然后重启一下MySQL服务:
sudo service mysql restart
云服务器的安全组规则记得打开3306端口号
这个不管是阿里云还是腾讯云抑或是别的云厂商的服务器都是会有这个东西的,教程网上搜都能搜得到,这里就不再赘述了,只提供一个解决问题的思路。
防火墙限制
输入下面命令查看当前系统防火墙状态:
sudo ufw status
如果是开启的那么直接关闭即可,如果不想关闭那么就网上搜一下如何查看3306端口是否被防火墙给拦截了就行,让防火墙放开3306端口应该就可以进行访问,同前文所说这里只是提供一个解决无法远程访问问题的思路。
运行安全配置脚本
为了提高 MySQL 的安全性,同时也是为了对 MySQL 服务器进行一些初始化的配置,可以运行安全配置脚本:
sudo mysql_secure_installation
该脚本会提示您设置 root 用户的密码,并会询问是否要删除匿名用户、禁止远程 root 登录、删除测试数据库及重新加载权限表等。根据自己的需求回答这些问题即可。
用户权限问题
然后此时登录 mysql 输入下面的命令:
SELECT host, user FROM mysql.user WHERE user = 'root';
或者
SELECT host, user FROM mysql.user;
输出:
可以看到此时显示出来的都是 host 都是本地的,因此无法进行远程访问。
此时我们可以输入下面的命令创建一个可以远程访问的用户:
# %表示允许任意IP通过该用户进行访问
CREATE USER '此处填写用户名'@'%' IDENTIFIED BY '次数填写该用户名对应的密码';
然后再设置该用户对应的权限:
GRANT ALL PRIVILEGES ON *.* TO '刚刚设置的用户名'@'%' WITH GRANT OPTION;
最后刷新一下权限:
FLUSH PRIVILEGES;
注意此时一般情况下就连接成功了,但也有可能遇到下面的问题:
连接时出现错误:authentication plugin 'cacheing_sha2_password' cannot be loaded
错误信息 “authentication plugin ‘caching_sha2_password’ cannot be loaded” 通常发生在我们尝试使用 MySQL 客户端或库连接到 MySQL 8.0 版本及以上的数据库时,而我们的客户端或库不支持默认的身份验证插件 caching_sha2_password。
有几种解决方案可以解决这个问题:
-
使用支持 caching_sha2_password 的客户端
确保我们使用的 MySQL 客户端或驱动程序(如 Python 的 MySQL Connector、JDBC、PHP 的 MySQLi 或 PDO)已更新到支持 caching_sha2_password 的版本。检查并更新到最新版本。 -
修改用户的身份验证插件
输入如下的命令修改我们所创建远程连接用户的属性即可:
ALTER USER '刚刚所创建的用户名'@'%' IDENTIFIED WITH mysql_native_password BY '该用户的密码';
这样用户权限问题应该可以得到解决,亲测有效。
总结
浅浅总结内容如下:
1、检查特定主机的 MySQL 用户权限。
2、如有需要,授予权限。
3、确保 MySQL 配置允许远程连接。
4、验证防火墙/安全组设置。
5、再次测试连接。
如果还是无法进行远程连接,那么仔细检查上述每一个环节,一般只要上面的问题都注意到了远程访问就不会有问题的,对于我遇到的情况来说是这样的,希望能对看到这篇文章的你有所帮助。