搭建MySQL数据库
突发奇想,想做一个微信小程序,于是买了云服务器,准备尝试自己搭建MySQL集群。
系统版本:Ubuntu 22.04.3 LTS
一、通过apt包管理器安装MySQL。
sudo apt install mysql-server
二、安装成功后,mysql-service会启动。可用以下命令查看:
systemctl status mysql.service
输出如下:
三、验证MySQL安装结果。使用如下命令:
mysql --version
输出如下:
四、启用MySQL安全启动配置向导,这一步在生产环境是有很有必要的。运行mysql_secure_installation会执行以下几个设置:
1.为root用户设置密码
2.删除匿名账号
3.取消root用户远程登录
4.删除test库和对test库的访问权限
5.刷新授权表使修改生效
如要启用,命令如下:
sudo mysql_secure_installation
五、以root身份登录并调整用户身份验证
在未执行任何配置的情况下在Ubuntu上全新安装MySQL后,服务器用户将使用身份验证套接字(auth_socket)插件进行身份验证。
一般而言,无需调整MySQL的root账号。为了使MySQL能被外部访问,我这里选择新建一个账号。
首先,执行以下命令进入MySQL控制台:
sudo mysql
然后,查看数据库的不同用户的身份验证方法:
select user,authentication_string,plugin,host from mysql.user;
可以看到root账号使用auth_socket插件进行身份验证。
然后,使用以下命令新建账号
create user 'account'@'%' identified by 'password';
上面命令中的account替换成想要的账号名,password替换成想要的密码,%代表任何主机都可连接的MsSQL,如果只想允许特定IP的远程连接,将%替换成特定IP地址即可。
然后,执行下面两个命令:
grant all privileges on . to 'account'@'%' with grant option;
flush privileges;
上面的两个命令将完成授权。
然后,退出并重启MySQL服务:
sudo service mysql restart
使用新账号登录时,会需要输入密码,如图:
六、开启远程登录
完成上述步骤后,在服务器本机登录就没有问题了。但如果想要远程访问,还需执行以下操作:
首先,查看端口是否开放,命令如下:
netstat -nltp
我们发现3306端口的Local地址是127.0.0.1,代表只能本机访问,外面访问不了此端口。
然后,修改mysqld.cnf文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1,这个bind-address就是绑定IP,也就是默认只允许本机登录。
然后,重启MySQL服务器:
sudo service mysql restart
再次查看端口是否开放,情况如下
netstat -nltp
可以看到,3306端口已对外网开放。
七、云服务器开启安全组策略
在完成了以上配置后,还需要开启云服务器的安全组规则,快速添加,勾选MySQL即可
八、本地DBeaver连接云服务器上的MySQL数据库
在完成了以上步骤后,我使用DBeaver连接MySQL数据库,报Public Key Retrieval is not allowed错误。
设置allowPublicKeyRetrieva = true解决