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

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

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

相关推荐
阿桨4 小时前
【Prometheus-MySQL Exporter安装配置指南,开机自启】
数据库·mysql
麓殇⊙4 小时前
MySQL--数据引擎详解
数据库·mysql
rainFFrain4 小时前
MySQL的数据类型
数据库·mysql
云闲不收4 小时前
mysql大量数据迁移(内含mysql表空间的介绍)
数据库·mysql
阿达C6 小时前
MySQL常用函数详解及SQL代码示例
android·sql·mysql
悠悠-我心7 小时前
docker 通过定时任务恢复MySQL数据库
数据库·mysql·docker
云计算DevOps-韩老师8 小时前
Windows 10系统中找回MySQL 8的root密码
windows·mysql·adb
蔡蓝8 小时前
Mysql中索引的知识
数据库·mysql
backRoads9 小时前
MYSQL三大日志、隔离级别(MVCC+锁机制实现)
数据库·mysql