当前位置: 首页 > news >正文

CentOS一键安装MySQL5.7(源码安装)

通过sh脚本的方式一键安装MySQL.这里是通过源码安装的.版本是5.7.44

首先我们进到MySQL官方网站.点击进入MySQL官网,找到需要安装的版本对应的源码.

在这里插入图片描述

这里我们选择Linux 通用版 64位的源码文件.在Download按钮处右击复制源码的资源链接地址.可以用来替换脚本中默认的资源地址.
在这里插入图片描述

下载地址:

https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

也可以点击此处链接直接下载.5.7.44版本.https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

如需其他版本可自行选择.

接下来就可以编写一键安装脚本.

注意: 我们在脚本中提前设置了数据库的密码是123456.这里可以按需更改
注意: 我们在脚本中提前设置了数据库的密码是123456.这里可以按需更改
注意: 我们在脚本中提前设置了数据库的密码是123456.这里可以按需更改

#!/bin/bash
#
#********************************************************************# 这里是mysql源码文件的地址.按需替换 
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz. /etc/init.d/functions 
SRC_DIR=`pwd`# 这里是mysql源码文件的名称.需要和上面下载的文件名对应
MYSQL='mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz'COLOR='echo -e \E[01;31m'
END='\E[0m'# 这里是mysql的root密码.按需替换.不改默认就是123456
MYSQL_ROOT_PASSWORD=123456mkdir /data/mysql -pcheck (){if [ $UID -ne 0 ]; thenaction "当前不是root用户,安装失败,退出!" falseexit 1
ficd  $SRC_DIR
if [ !  -e $MYSQL ];then$COLOR"缺少${MYSQL}文件"$END$COLOR"请将相关软件放在${SRC_DIR}目录下"$ENDexit
elif [ -e /usr/local/mysql ];thenaction "mysql数据库已存在,安装失败,退出!" falseexit
elsereturn
fi
} install_mysql(){$COLOR"开始安装MySQL数据库..."$ENDyum  -y -q install libaio numactl-libs   libaio &> /dev/nullcd $SRC_DIRtar xf $MYSQL -C /usr/local/MYSQL_DIR=`echo $MYSQL| sed -nr 's/^(.*[0-9]).*/\1/p'`ln -s  /usr/local/$MYSQL_DIR /usr/local/mysqlchown -R  root.root /usr/local/mysql/id mysql &> /dev/null || { useradd -s /sbin/nologin -r  mysql ; action "创建mysql用户"; }echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh.  /etc/profile.d/mysql.shln -s /usr/local/mysql/bin/* /usr/bin/cat > /etc/my.cnf <<-EOF
[mysqld]
server-id=1
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock                                                                                                   
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOFmysqld --initialize --user=mysql --datadir=/data/mysql cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqldchkconfig --add mysqldchkconfig mysqld onservice mysqld startsleep 3[ $? -ne 0 ] && { $COLOR"数据库启动失败,退出!"$END;exit; }MYSQL_OLDPASSWORD=`awk '/A temporary password/{print $NF}' /data/mysql/mysql.log`mysqladmin  -uroot -p$MYSQL_OLDPASSWORD password $MYSQL_ROOT_PASSWORD &>/dev/nullaction "mysql数据库安装完成!" 
}checkinstall_mysql

复制上方代码另存为 install_mysql.sh

接下来上传文件到服务器

给脚本读写权限

chmod 777 install_mysql.sh

执行脚本

./install_mysql.sh 

观察控制台输出
在这里插入图片描述
大概等待30s即可安装完成
在这里插入图片描述
注意: 我们在脚本中提前设置了数据库的密码是123456.这里可以按需更改
注意: 我们在脚本中提前设置了数据库的密码是123456.这里可以按需更改
注意: 我们在脚本中提前设置了数据库的密码是123456.这里可以按需更改

我们使用命令

mysql -u root -p 

输入你的密码.如果没有更改脚本中的密码,那么就是123456.进入查看一下

在这里插入图片描述
我这里报错了.提示

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

看样子是缺少一个库文件.先不要慌.我们查一下系统中是否有这个文件

find / -name 'libncurses.so*'

在这里插入图片描述
查了一下发现我们没有5版本的,只有6版本的这个库
这里只需要使用软连接将高版本创建软连接到5版本即可
在这里插入图片描述

ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5

继续运行

 mysql -uroot -p

发现又报错了
在这里插入图片描述
同样的问题,我们还是采取和上面一样的操作.先查一下系统是否含有这个文件

find / -name 'libtinfo.so*'

在这里插入图片描述
发现了有更高版本的库文件,我们如法炮制,继续创建软连接

ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

再运行

mysql -uroot -p

输入密码 就进来了.总算是大功告成
在这里插入图片描述

开启远程访问

接下来就是开启远程访问,只有开启远程访问之后我们才能通过客户端(类似Navicat,DBeaver ,DataGrip等软件)连接到Mysql.否则只有安装mysql的机器自身能连接.
执行以下命令

# 先指定数据库
use mysql;# 把数据库的所有库和所有表 授权给root用户 可以通过任意主机地址连接 并且权限可以传递
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;# 刷新权限使配置生效
flush privileges;

针对MySQL的授权语句的补充

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 

该语句是 MySQL 的权标准限授予命令,但需注意该语法在 MySQL 8.x 及更高版本中已失效,需改用分步操作(先创建用户再授权) 。
以下是各参数的含义及注意事项:

  1. GRANT ALL PRIVILEGES
    作用:授予用户所有数据库操作权限,包括 SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)、CREATE(创建表)、DROP(删除表)等 30+ 种权限 。
    范围:ALL PRIVILEGES 表示对指定对象的所有权限,等同于最高管理员权限。

  2. ON .
    作用:定义权限的作用范围。
    第一个 :表示所有数据库(如 mysql、sys 等系统库和用户自定义库)。
    第二个 :表示所有数据表(如 user 表、业务表等)。
    扩展语法:
    db_name.
    :限定为某个数据库的所有表(如 mydb.
    )。
    db_name.table_name:限定为某数据库的某张表 。

  3. TO ‘root’@‘%’
    用户标识:‘用户名’@‘主机名’,用于指定被授权的用户和允许连接的客户端 IP。
    root:用户名,默认超级管理员账号。
    %:表示允许从 任何 IP 地址 连接(如远程访问)。若需限制 IP,可替换为 localhost(仅本地)或 192.168.1.%(特定 IP 段) 。

  4. IDENTIFIED BY ‘123456’
    作用:为用户设置登录密码(此处密码为 123456)。
    注意:
    在 MySQL 8.x 及以上版本,此语法已废弃,需通过 CREATE USER 先创建用户并设置密码,再单独授权 。
    低版本(如 MySQL 5.x)仍支持此语法,但需注意密码策略(如长度、复杂度) 。

  5. WITH GRANT OPTION
    作用:允许被授权用户将自己拥有的权限授予其他用户(即“权限传递”) 。
    风险:若滥用可能导致权限扩散,建议仅在必要时开启。

相关文章:

  • PHP代码-服务器下载文件页面编写
  • tarjan缩点+强联通分量
  • 数据库day-08
  • 医药生产的“神助攻”:疆鸿智能JH-ECT012,EtherCAT转CC LINK IE超靠谱
  • 如何有效保护iOS应用?分享一款实用的IPA混淆工具
  • Java高频面试之并发编程-10
  • 【无需安装额外软件,JavaScript脚本】B站批量取消关注
  • Consul安装部署(Windows环境)
  • 为什么要学习《易经》?
  • ESP32- 开发笔记- 软件开发 4 - GPIO 口
  • 学习基本宠物美容
  • 使用org.java_websocket库第三方库实现广播
  • RISC-V架构低功耗MCU中断控制系统设计
  • 《Vue3学习手记7》
  • 3D Gaussian Splatting部分原理介绍和CUDA代码解读
  • grafana/loki 设置日志保留时间
  • C++的vector中emplace_back() 与 push_back() 的区别
  • 高防 CDN 的防护功能有哪些?从基础防护到智能防御的全面解析
  • redis高级进阶
  • 记录 Flink jdbc、mysql-cdc 连接 mysql8 碰到的适配问题
  • 农行一季度净利润719亿元增2.2%,不良率微降至1.28%
  • 邮储银行一季度净赚超252亿降逾2%,营收微降
  • 日本大米价格连续16周上涨,再创最高纪录
  • 幸福航空五一前三天航班取消:客服称目前是锁舱状态,无法确认何时恢复
  • 2025上海浪琴环球马术冠军赛开赛在即,首批赛马今晨抵沪
  • 民航局:中方航空公司一季度运输国际旅客同比大增34%