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.这里可以按需更改

bash 复制代码
#!/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=123456


mkdir /data/mysql -p
 
check (){
 
if [ $UID -ne 0 ]; then
  action "当前不是root用户,安装失败,退出!" false
  exit 1
fi
 
cd  $SRC_DIR
if [ !  -e $MYSQL ];then
        $COLOR"缺少${MYSQL}文件"$END
		$COLOR"请将相关软件放在${SRC_DIR}目录下"$END
        exit
elif [ -e /usr/local/mysql ];then
        action "mysql数据库已存在,安装失败,退出!" false
        exit
else
	return
fi
} 
 
install_mysql(){
    $COLOR"开始安装MySQL数据库..."$END
	yum  -y -q install libaio numactl-libs   libaio &> /dev/null
    cd $SRC_DIR
    tar xf $MYSQL -C /usr/local/
    MYSQL_DIR=`echo $MYSQL| sed -nr 's/^(.*[0-9]).*/\1/p'`
    ln -s  /usr/local/$MYSQL_DIR /usr/local/mysql
    chown -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.sh
	ln -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
EOF
    mysqld --initialize --user=mysql --datadir=/data/mysql 
    cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig mysqld on
    service mysqld start
	sleep 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/null
    action "mysql数据库安装完成!" 
}
 
 
check
 
install_mysql

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

接下来上传文件到服务器

给脚本读写权限

bash 复制代码
chmod 777 install_mysql.sh

执行脚本

bash 复制代码
./install_mysql.sh 

观察控制台输出

大概等待30s即可安装完成

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

我们使用命令

bash 复制代码
mysql -u root -p 

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

我这里报错了.提示

bash 复制代码
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

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

bash 复制代码
find / -name 'libncurses.so*'

查了一下发现我们没有5版本的,只有6版本的这个库

这里只需要使用软连接将高版本创建软连接到5版本即可

bash 复制代码
ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5

继续运行

bash 复制代码
 mysql -uroot -p

发现又报错了

同样的问题,我们还是采取和上面一样的操作.先查一下系统是否含有这个文件

bash 复制代码
find / -name 'libtinfo.so*'

发现了有更高版本的库文件,我们如法炮制,继续创建软连接

bash 复制代码
ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

再运行

bash 复制代码
mysql -uroot -p

输入密码 就进来了.总算是大功告成

开启远程访问

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

执行以下命令

bash 复制代码
# 先指定数据库
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

    作用:允许被授权用户将自己拥有的权限授予其他用户(即"权限传递") 。

    风险:若滥用可能导致权限扩散,建议仅在必要时开启。

相关推荐
iceland941 分钟前
mysql 8递归查询
数据库·mysql
Runing_WoNiu5 小时前
Mysql与Ooracle 索引失效场景对比
数据库·mysql·oracle
哈基米喜欢哈哈哈8 小时前
Uber的MySQL实践(一)——学习笔记
数据库·笔记·后端·mysql
哥哥还在IT中9 小时前
MVCC 实现之探析
数据库·mysql·tidb
野蛮人6号11 小时前
MySQL笔记
数据库·笔记·mysql
苹果醋312 小时前
Deep Dive React 4 How does React State actually work
java·运维·spring boot·mysql·nginx
Ai财富密码12 小时前
【Python爬虫】正则表达式入门及在数据提取中的高效应用
数据库·mysql·php
tq108614 小时前
MySQL definer does not exist 问题分析
mysql
叁沐16 小时前
MySQL 25 MySQL是怎么保证高可用的?
mysql
惊骇世俗王某人1 天前
MySQL数据库索引及底层数据结构
数据结构·数据库·mysql