Centos安装MySQL5.7并配置远程登录
系统版本:CentOS Linux release 7.3.1611
预装MySQL版本:MySQL5.7.42
纯净环境安装,安装前系统空空
下载源配置和安装
# import the latest MySQL GPG key to your system.
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# configure the Yum repository
sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# install
sudo yum install mysql-community-server
系统设置
sudo systemctl start mysqld
# 开机自启动
sudo systemctl enable mysqld
# 查看初始密码
grep 'A temporary password' /var/log/mysqld.log |tail -1
在修改root密码之前,先修改原本的密码安全策略,否则设置的密码要很复杂。这里有两种方式,要么使用初始密码登录进数据库修改:
mysql> set global validate_password_policy=0;
为了以后新建用户着想,还是建议写在配置文件中,检查路径/etc/my.cnf、/etc/mysql/my.cnf、/etc/mysql/mysql.conf.d/mysqld.cnf,找到[mysqld]配置,在下方添加
validate_password_policy=0
然后运行如下安装程序进行数据库初始化、修改root密码
/usr/bin/mysql_secure_installation
运行完成后应该可以本地正常登录
配置远程登录
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
可以观察到以下变化:
远程连接不上排错
-
首先确认使用的用户有远程权限,比如上述的root用户就配置了远程连接权限
-
再通过netstat -nltp命令观察开放的端口以及监听ip(yum install net-tools下载)
如下图,在::;3306端口上监听,这意味着监听了所有ip的连接,如果显示的是127.0.0.1:3306监听,则只监听了本地连接,需要查看配置文件中是否有bind-address字段设置为127.0.0.1,可以将改行删除或者改为0.0.0.0
-
如果监听的端口和ip没有问题,大概率就是防火墙问题
centos使用firewall防火墙,可以查看服务是否开启,如果在比较安全的环境里可以直接关闭防火墙,或者添加通向3306端口的连接规则(如果没有的话),如下命令:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
额外事项
有一些mysql配套应用(如tpcc-mysql压测)需要使用mysql.h包,所以建议额外安装devel包
sudo yum install mysql-devel