加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.025zz.cn/)- 智能边缘云、设备管理、数据工坊、研发安全、容器安全!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux数据库环境搭建七步实操指南

发布时间:2026-10-12 09:02:49 所属栏目:Linux 来源:DaWei
导读:  哎你们记得三月那回吗?我段位其实不高,就那个MySQL环境搭建的活儿,打得挺艰难的。当时工单排到下午三点,耳机戴久了耳朵疼,键盘空格键还卡键,啪嗒啪嗒响得跟打拍子似的。我原以为按文档走流程就行,结果第一步就卡壳——y

  哎你们记得三月那回吗?我段位其实不高,就那个MySQL环境搭建的活儿,打得挺艰难的。当时工单排到下午三点,耳机戴久了耳朵疼,键盘空格键还卡键,啪嗒啪嗒响得跟打拍子似的。我原以为按文档走流程就行,结果第一步就卡壳——yum源配置,那破镜像站慢得像蜗牛,换源的时候手滑把repo文件全删了,重启后连sudo都用不了,直接GG。

  后来老张在语音里咳嗽了两声,说“你试试用dnf?”我愣了下,dnf?这不是Windows下那个游戏吗?他骂我笨,说CentOS 8之后都用dnf了,yum是旧版。我充电线不够长,只能歪着坐到工位角落,照他说的改配置,结果还真连上了。这时候外卖送到了,我开门回来发现终端卡死,原来刚才复制粘贴的命令里混了中文引号,直接把bash搞崩溃了。

  第二步装依赖包,我照着文档敲“yum install -y gcc make openssl-devel”,结果报错说找不到包。老张在语音里笑出声:“你CentOS版本多少?”我查了下,好家伙,7.9和8.5的包名能差半个屏幕,最后发现要装“mariadb-devel”而不是“mysql-devel”。这时候室友在旁边煮泡面,香味飘过来,我手一抖多敲了个空格,依赖全装到/usr/local里去了,后面编译的时候一直报路径错误。

  第三步编译源码才是重头戏。我原以为./configure --prefix=/usr/local/mysql就完事了,结果卡在“checking for termcap functions library...”半小时。老张说“你装ncurses-devel了吗?”我查了下,发现文档里没写这步,只能Ctrl+C终止,重新装依赖。这时候工位对面的小李突然喊:“我MySQL 5.7编译成功了!”我瞥了眼他的屏幕,好家伙,他直接用了预编译的二进制包,怪不得快——但他说预编译包在生产环境容易出兼容问题,还是得自己编译。

  第四步初始化数据目录,我照着文档敲“mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql”,结果报错说“basedir和datadir不能一样”。我懵了,文档里明明写的可以啊?老张在语音里骂:“你CentOS 7的SELinux关了吗?”我查了下,发现SELinux默认是Enforcing模式,会把/var/lib/mysql的权限锁死。改完配置后重启,又报“/usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file”,原来又漏装了libaio-devel。

  第五步配my.cnf才是最坑的。我照着网上找的模板改,把innodb_buffer_pool_size设成4G,结果启动时报“InnoDB: Warning: innodb_buffer_pool_size should be at least 128M”。老张说:“你机器内存才8G,设4G会OOM的!”我改了参数后重启,又报“Can't find file: './mysql/plugin.frm’”,原来是数据目录没初始化干净。这时候小李凑过来看,说:“你试试用mysql_install_db?”我试了下,结果CentOS 8已经弃用这命令了,得用mysqld --initialize-insecure。

  第六步启动服务,我敲“systemctl start mysqld”,结果报“Job for mysqld.service failed because the control process exited with error code”。查日志发现是/etc/my.cnf里有个参数写错了,把“log-error”写成了“log_error”。改完重启,又报“Address already in use”,原来3306端口被占用了——我早上测试的时候忘了关旧的MySQL进程。这时候老张说:“你直接kill -9 PID吧,反正是测试环境。”我照做了,结果把系统自带的mariadb进程也杀了,导致yum不能用,又得重新装mariadb-libs。

  第七步连数据库,我敲“mysql -u root -p”,结果报“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock’”。老张说:“你socket路径配错了吧?”我查了下my.cnf,发现[mysqld]里写的是“socket=/var/lib/mysql/mysql.sock”,但[client]里没同步改。改完配置后重启,终于连上了——但密码是空的,因为用了--initialize-insecure。我原以为要跑ALTER USER 'root'@'localhost' IDENTIFIED BY '123456',结果老张说:“测试环境别设密码,省得每次连都输入。”

文章配图,仅供参考

  后来复盘的时候,老张说:“你这七步里,至少三步是文档没写清楚的。”我说:“那为啥不更新文档?”他冷笑:“文档是给高手看的,新手踩坑才能记住。”我段位其实不高,但那回之后,我再搭MySQL环境,速度快了至少一倍——不是因为记住了命令,是因为知道哪些坑能绕,哪些必须踩。就像打游戏,你总死同一个地方,才会去看小地图,才会记闪现CD。优胜劣汰嘛,踩坑多的活下来,文档没写的细节,自然就刻在肌肉记忆里了。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章