需求:centos7.9安装mysql5.7并且开放外网ip访问,配置账号密码为:root 123456
前提:把文件mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz上传到了/usr/local/目录下,
下载地址:点击下载,记得先解压,再上传
要在CentOS 7.9上安装MySQL 5.7并配置外网IP访问,需要遵循以下步骤。
首先,进入/usr/local
目录,并解压下载的MySQL压缩包:
cd /usr/local/
tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
ln -s mysql-5.7.31-linux-glibc2.12-x86_64 mysql # 创建软链接方便后续操作
创建一个专门用于运行MySQL服务的用户(如果还没有的话):
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
然后更改MySQL安装目录的所有权:
cd /usr/local/mysql
chown -R mysql:mysql .
使用以下命令初始化数据库(这将创建一个默认的数据目录):
mkdir -p /data/mysql # 如果数据目录不在默认位置,请先创建它
chown -R mysql:mysql /data/mysql
./bin/mysqld --initialize --user=mysql --datadir=/data/mysql
注意:执行初始化时会生成一个临时root密码,请务必记下来,以便后续修改密码使用。
如果这一步报错:
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
则这样处理:
libaio
运行以下命令检查系统中是否已经安装了 libaio
:
rpm -qa | grep libaio
如果没有任何输出,说明 libaio
未安装。
libaio
使用 yum
包管理器安装 libaio
:
yum install -y libaio
安装完成后,再次运行上述检查命令确认安装成功。
有时即使安装了 libaio
,系统仍然可能找不到它。可以运行以下命令验证动态链接库路径:
ldconfig -p | grep libaio
如果没有找到 libaio.so.1
,可能需要更新动态链接库缓存:
ldconfig
完成上述步骤后,重新运行 MySQL 初始化命令:
./bin/mysqld --initialize --user=mysql --datadir=/data/mysql
编辑或创建配置文件/etc/my.cnf
(或者 /etc/mysql/my.cnf
) 来适应您的环境,确保包含如下基本配置:
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
port=3306
server_id=1
socket=/tmp/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 开放外网访问
bind-address = 0.0.0.0
您可以使用MySQL自带的启动脚本来设置开机自启:
cp support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
chkconfig mysql on
现在尝试启动MySQL服务:
service mysql start
使用初始化时生成的临时密码登录MySQL,并修改root用户的密码为123456
:
./bin/mysql -u root -p
在MySQL命令行中执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
允许root用户从任何主机连接:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yuancheng123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
最后,不要忘记在防火墙上打开MySQL端口(默认是3306),以允许外部访问:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
完成以上步骤后,您的MySQL服务器应该已经正确安装并可以被外网访问(密码是yuancheng123456)了。请记得替换上述命令中的路径、用户名、密码等信息为您实际使用的值。