云锁服务器手把手教你:Centos7下MySQL的安装详解

云耀云服务器 MySQL 已经在 CentOS 7 上跑起来了,服务能自启动,端口监听正常,远程通过 Cpolar 的固定 TCP 地址访问也能连通。 下面把整个过程倒着讲一遍,按时间顺序往回···

云耀云服务器

MySQL 已经在 CentOS 7 上跑起来了,服务能自启动,端口监听正常,远程通过 Cpolar 的固定 TCP 地址访问也能连通。

下面把整个过程倒着讲一遍,按时间顺序往回走,把每一步发生的事、我做了什么、哪些地方容易卡住,都讲清楚。目的是让你照着做也能走通,不用到处碰壁。

先说把数据库暴露到外网这块。因为机器没有公网 IP,所以不能直接把 3306 放到互联网上。解决办法是用 Cpolar 做内网穿透,把本机 3306 映射成一个固定的公网 TCP 地址。安装 Cpolar 很简单,跑官网的一键脚本就行。启动后在浏览器打开 本机IP:9200(默认面板端口),用 Cpolar 账号登录,会看到隧道管理界面。创建隧道的时候选 TCP 类型,区域可以选延迟相对好的节点,比如 China Top 这种,描述随便写,最关键是把随机端口保留为固定端口。操作的顺序要注意:先在 TCP 地址列表里把某个地址保留(reserve),然后回到隧道配置里把该保留地址选上并保存。保存后列表会显示固定的公网地址和端口。最后在远端机器上用 mysql 客户端指向这个公网地址和端口测试连接,如果能连上说明穿透配置没问题。补充一句:CPolar 的界面直观,但不按步骤来会很容易只保留地址却没在隧道里绑定,或反过来,导致看着有保留地址但隧道还在用随机端口。

回到 MySQL 的最终配置。安装好后需要在配置文件里把监听地址和端口改一下,让 mysqld 监听所有网卡。常用位置是 /etc/my.cnf 或 /etc/my.cnf.d 下面的文件,在 [mysqld] 段写两行:

bind-address=0.0.0.0

port=3306

改完配置后执行 systemctl restart mysqld,然后用 ss -tunlp | grep 3306 或 netstat -tulnp | grep 3306 看端口是不是处于 LISTEN。如果监听起来了,下一步是建一个可以远程登录的账号。root@localhost 默认只能本地登录,所以你得建个远程用户,比如:

CREATE USER devuser@% IDENTIFIED BY 密码;

GRANT ALL PRIVILEGES ON *.* TO devuser@% WITH GRANT OPTION;

FLUSH PRIVILEGES;

云服务器远程连接

这里我写的是测试环境常用的全权限配置,生产环境肯定按最小权限原则来。权限下发完,拿远端客户端连 CPOLAR 给的公网地址、端口、用户名和密码试试,能跑 SHOW DATABASES; 或做些基本查询就说明权限没问题。

能做到上一步,前提是你已经解决了 root 密码或权限问题。很多人装完 MySQL 后会碰到不知道初始 root 密码的问题。常用办法是临时跳过权限验证来改密码。步骤大致是:先停掉 mysqld,然后临时加上 --skip-grant-tables 参数启动,让服务不做权限校验。常见做法是在 systemd unit 或 mysqld 启动参数里临时加入这个参数,然后 systemctl start mysqld。启动后直接用 mysql 客户端登录(不需要密码)。登录进去后根据 MySQL 版本的不同执行修改密码的 SQL。例如新版本常用:

ALTER USER root@localhost IDENTIFIED BY 新密码;

旧版本有时要更新 mysql.user 表:

UPDATE mysql.user SET authentication_string=PASSWORD(新密码) WHERE User=root;

然后 FLUSH PRIVILEGES。改完密码后务必把 --skip-grant-tables 的临时配置删掉,重启 mysqld,确保权限系统恢复正常。这里要强调的一点:跳过权限是很危险的状态,操作完成后一定要及时撤销。改完后用 USE mysql; SELECT User, Host, authentication_string FROM mysql.user; 之类的命令核验一下数据是否正确。

再往前看安装过程本身。安装之前要把系统里可能存在的旧残留清理干净。先用 ps aux | grep mysqld 看有没有在跑的实例,需要的话先停掉或 kill。再用 rpm -qa | grep -i mysql 或 yum list installed | grep -i mysql 看有哪些相关包,像 mysql-server、mysql-community-server、mysql-client 等有残留就卸载。重要目录也检查一下:/etc/my.cnf、/var/lib/mysql 等,必要时先备份后删除,保证安装环境干净。残留配置或数据常常会导致新安装的服务无法正确启动或者读到旧配置,清理是省事的第一步。

阿里云服务器租用价格

确认系统是 CentOS 7 后,去 repo.mysql.com 下载对应的社区版仓库 rpm 包(针对 CentOS 7 的)。把 rpm 上传到服务器的 root 目录,用 rpm -Uvh 安装仓库包,然后走 yum install mysql-community-server 来安装。一个常见卡点是 GPG 公钥验证失败,yum 会报错说缺公钥。碰到这个不要慌,去 MySQL 官方网站把对应的 RPM-GPG-KEY 文件下载下来,然后用 rpm --import/path/to/RPM-GPG-KEY-mysql 导入公钥,或者把 repo 文件里指向正确的 key_url,再重跑 yum install。导入公钥后大多数情况下就能顺利通过。

安装完成要启用服务:

systemctl enable mysqld

systemctl start mysqld

启动后会在 /var/log/mysqld.log 里产生日志,初次安装通常会生成一个临时密码,日志里有 temporary password 这类关键词,可以 grep 查找。举例:

grep temporary password /var/log/mysqld.log

不过如果你打算走跳过权限直接改密码的流程,这一步可以不看临时密码。确认 mysqld 已经启动后,用 mysql -u root -p 尝试登录,或者通过 ss/netstat 检查 3306 的监听情况。

另一个容易出问题的是系统里可能存在与 MySQL 冲突的包,比如 mariadb-libs 或其他兼容包。yum 在安装过程中如果发现有冲突会停止。遇到这种情况先确认冲突包是否可以卸载,必要时先移除它们再安装 MySQL。卸包要小心,别把系统关键库也一起删了。

细节方面要注意的还有:如果你在某个配置文件或 systemd override 里临时加入了 --skip-grant-tables,务必把修改的文件和位置做清楚标记,别忘了恢复。改完密码并确认能用新密码登录后,删除那行,重启服务,再次核验 mysql.user 表里的密码字段和权限情况。不同 MySQL 版本字段名称可能不一样,比如有的版本是 authentication_string,有的是 password,执行 SQL 时注意版本差异,别盲目用老命令。

把 MySQL 配置好了之后要做连通性测试。先在本机上本地连接,确认能正常查询。然后在同一局域网的另一台机器上测试远程连接,确认 bind-address 和防火墙设置没挡住。最后才走 Cpolar 的公网映射测试,示例命令:

mysql -h 公网地址 -P 公网端口 -u devuser -p

连上后试 SHOW DATABASES; 看见 system 库和自己建的库,说明一切都在正常工作。我的最后一次测试就是在另一台远端机器上用 Cpolar 分配的固定公网地址和端口连入,执行 SHOW DATABASES; 能看到期待的库,连接稳定。

再补充一些 Cpolar 的细节操作经验,免得你进去就迷糊。安装一键脚本后,cpolar 的可执行一般会放在 /usr/local/bin 或 /opt 之类的位置。启动后在面板里看隧道列表,默认随机分配的公网地址会变来变去,如果想固定就要做保留 TCP 地址的操作。保留步骤是先把某个 TCP 地址 reserve,然后回到隧道配置里把该保留地址选上并保存。务必确认两处都做了。创建隧道时选择区域会影响延迟,选离目标访问地近的区域可以提高稳定性。面板里还有一些额外选项,比如本地端口映射、访问控制白名单等,根据实际需要设置。做映射时别忘了本机防火墙(firewalld 或 iptables)是否允许 3306 的本地入站。

整个过程里容易卡的点基本上就是这些:旧包或进程没清理导致安装失败;GPG 公钥验证问题;通过 --skip-grant-tables 改完密码后忘记恢复;没把 bind-address 改成 0.0.0.0 导致外网连不上;CPolar 没把保留地址绑定回隧道配置。遇到这些情形按步骤排查,一般都能解决。

我把关键命令和路径在上面都提到了,实操的时候按顺序走一遍就能把本地的 CentOS 7 上的 MySQL 从零装到能本地用、能远程通过内网穿透访问。最后一次验收是在远端机器上通过 Cpolar 提供的固定公网地址和端口连入,执行 SHOW DATABASES; 能看到系统库和用户建的库,连接稳定且能执行查询。

云服务器的配置

您好:云优数据云计算 www.yunyoushuju.cn 2核2G6M最低19.9元/月 欢迎开机

发表评论

评论列表
未查询到任何数据!