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

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
    作用:允许被授权用户将自己拥有的权限授予其他用户(即“权限传递”) 。
    风险:若滥用可能导致权限扩散,建议仅在必要时开启。

http://www.xdnf.cn/news/3007.html

相关文章:

  • matplotlib饼图练习
  • 通过 Node.js 搭配 Nodemailer 实现邮箱验证码发送
  • 五、UI自动化测试05--PyTest框架
  • grafana/loki 设置日志保留时间
  • Cursor —— AI编辑器 使用详解
  • 【动态导通电阻】 GaN PiN二极管电导调制对动态 RON 的影响
  • 从Windows开发迁移到信创开发的指南:国产替代背景下的技术路径与实践
  • Webshell管理工具的流量特征
  • 桂链:使用Fabric的测试网络
  • 043-代码味道-循环依赖
  • LeetCode58_最后一个单词的长度
  • QT控件 参考Qt的PIMPL设计模式实现使用QWidget控件绘制3D饼状图表和3D柱状图表,使用QChartView绘制圆柱体图表
  • CORS跨域学习
  • opencv 模板匹配
  • [USACO08DEC] Hay For Sale S Java
  • React Native 太慢:kotlin-gradle-plugin-2.0.21-gradle76.jar 下载太慢
  • Code Complete代码大全20年纪念版附录书籍等
  • 归并排序排序总结
  • 某高端制造企业知识中枢升级,基于悦数 Graph RAG 打造工业级「故障排查最强大脑」
  • OceanBase数据库-学习笔记5-用户
  • 《系统分析师-第三阶段—总结(七)》
  • C++入门(缺省参数/函数/引用)
  • 组件轮播与样式结构重用实验
  • Linux《进程概念(中)》
  • 在Arduino U8g2库中显示中文的方法
  • 「Mac畅玩AIGC与多模态06」开发篇02 - 开发第一个知识库问答应用
  • 电流探头的创新应用与霍尔效应原理
  • word文档插入公式后行距变大怎么办?
  • 大模型入门
  • 码蹄集——进制输出、求最大公约数、最小公倍数