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 及更高版本中已失效,需改用分步操作(先创建用户再授权) 。
以下是各参数的含义及注意事项:
-
GRANT ALL PRIVILEGES
作用:授予用户所有数据库操作权限,包括 SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)、CREATE(创建表)、DROP(删除表)等 30+ 种权限 。
范围:ALL PRIVILEGES 表示对指定对象的所有权限,等同于最高管理员权限。 -
ON .
作用:定义权限的作用范围。
第一个 :表示所有数据库(如 mysql、sys 等系统库和用户自定义库)。
第二个 :表示所有数据表(如 user 表、业务表等)。
扩展语法:
db_name.:限定为某个数据库的所有表(如 mydb.)。
db_name.table_name:限定为某数据库的某张表 。 -
TO ‘root’@‘%’
用户标识:‘用户名’@‘主机名’,用于指定被授权的用户和允许连接的客户端 IP。
root:用户名,默认超级管理员账号。
%:表示允许从 任何 IP 地址 连接(如远程访问)。若需限制 IP,可替换为 localhost(仅本地)或 192.168.1.%(特定 IP 段) 。 -
IDENTIFIED BY ‘123456’
作用:为用户设置登录密码(此处密码为 123456)。
注意:
在 MySQL 8.x 及以上版本,此语法已废弃,需通过 CREATE USER 先创建用户并设置密码,再单独授权 。
低版本(如 MySQL 5.x)仍支持此语法,但需注意密码策略(如长度、复杂度) 。 -
WITH GRANT OPTION
作用:允许被授权用户将自己拥有的权限授予其他用户(即“权限传递”) 。
风险:若滥用可能导致权限扩散,建议仅在必要时开启。