二进制安装GreatSQL/MySQL
在一个全新CentOS环境中,下载GreatSQL二进制包,手动安装,并根据GreatSQL提供的my.cnf模板适当调整后用于考核环境的my.cnf。
完成初始化,并启动实例。
安装操作系统
在一个全新CentOS环境中,下载GreatSQL二进制包,手动安装,并根据GreatSQL提供的my.cnf模板适当调整后用于考核环境的my.cnf。
安装操作系统:
系统版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.76.1.el7.x86_64 #1 SMP Wed Aug 10 16:21:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# rpm -q centos-release
centos-release-7-9.2009.1.el7.centos.x86_64
配置如下
SSH连接:
-
ifconfig查看虚拟机的ip地址
ifconfig
-
用ssh工具连接
更新阿里源
-
更改配置文件(很重要)
备份CentOS 7系统自带yum源配置文件命令:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-
下载CentOS 7的repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
epo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
-
打开CentOS-Base.repo文件:
vim /etc/yum.repos.d/CentOS-Base.repo
-
将文件中的所有http开头的地址更改为https(虽然要手动改的地方不多,但是可以用命令代替手动改,有空研究一下)
-
更新镜像源
清除缓存:yum clean all
生成缓存:yum makecache
-
更新源
yum update
环境准备
jemalloc库
安装依赖jemalloc库(推荐5.2.1+版本)。jemalloc 是一款内存分配器
yum -y install jemalloc jemalloc-devel
找不到要安装的包:
[root@localhost yum.repos.d]# yum -y install jemalloc jemalloc-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
没有可用软件包 jemalloc。
没有可用软件包 jemalloc-devel。
错误:无须任何处理
以下为踩坑记录,可跳过
#安装epel.repo数据源,然后通过yum安装jemalloc
yum install epel-release -y
yum install jemalloc -y
#查看安装的版本
yum list jemalloc
#发现版本是3.6.0,踩坑了
jemalloc.x86_64 0:3.6.0-1.el7
#卸载
yum remove jemalloc.x86_64
用rpm包重新安装
#下载rpm包
https://centos.pkgs.org/8/epel-x86_64/jemalloc-5.2.1-2.el8.x86_64.rpm.html
#安装rpm包
rpm -ivh /root/jemalloc-5.2.1-2.el8.x86_64.rpm
#查看安装的版本
yum list jemalloc
验证安装:而后执行下面的操作加载libjemalloc库,并确认是否已存在
[root@localhost ~]# ldconfig
[root@localhost ~]# ldconfig -p | grep libjemalloc
libjemalloc.so.1 (libc6,x86-64) => /lib64/libjemalloc.so.1
#比文档的示例少了下面这行,问题不大继续安装
libjemalloc.so (libc6,x86-64) => /usr/local/lib64/libjemalloc.so
#安装完发现了文档提供了安装指令,下次试试
yum install -y pkg-config perl libaio-devel numactl-devel numactl-libs net-tools openssl openssl-devel jemalloc jemalloc-devel
c语言库glibc
检查c语言库glibc版本,查到是2.17
ldd --version
[root@localhost ld.so.conf.d]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
由 Roland McGrath 和 Ulrich Drepper 编写
检查系统中的Mysql或mariadb
检查系统中的Mysql或mariadb,如果存在将其卸载
[root@localhost ld.so.conf.d]# rpm -qa | grep mysql
[root@localhost ld.so.conf.d]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
[root@localhost ld.so.conf.d]# yum -y remove mariadb-libs-5.5.68-1.el7.x86_64
二进制安装GreatSQL
下载GreatSQL二进制包
#下载地址:https://gitee.com/GreatSQL/GreatSQL/releases
wget https://product.greatdb.com/GreatSQL-8.0.25-16/GreatSQL-8.0.25-16-Linux-glibc2.17-x86_64.tar.xz
解压二进制包,到/usr/local/目录,并改名
#解压
tar xvf GreatSQL-8.0.25-16-Linux-glibc2.17-x86_64.tar.xz -C /usr/local/
#改名
cd /usr/local/
mv GreatSQL-8.0.25-16-Linux-glibc2.17-x86_64 mysql
#创建数据目录
cd mysql
mkdir data
创建MySQL的专用用户
#-M不创建主目录,-s /sbin/nologin不允许登录,-r创建的是系统用户
useradd -M -s /sbin/nologin -r mysql
#修改所属主和所属组
chown -R mysql.mysql /usr/local/mysql/
创建全局变量
vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
#刷新全局变量
. /etc/profile.d/mysql.sh
#两种刷新方式,还可以使用
source /etc/profile.d/mysql.sh
创建自动启动
生成启动脚本,并启动mysql
cp support-files/mysql.server /etc/init.d/mysqld
加入启动列表
chkconfig --add mysqld
chkconfig --list
编辑配置文件/etc/my.cnf
叶老师的配置文件生成器,数据库文件地址要和初始化的参数一致
https://imysql.com/my-cnf-wizard.html
#关键参考代码
vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/usr/local/mysql/mysql.sock
character-set-server=utf8
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
[mysql]
socket=/usr/local/mysql/mysql.sock
[client]
socket=/usr/local/mysql/mysql.sock
初始化GreatSQL
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
--initialize #初始化参数
--basedir #数据库目录
--datadir #数据目录
#数据库目录要和my.cnf一致,并保证GreatSQL有权限
#如果想重新初始化,记得数据目录,特别是.index文件。
运行效果如下
[root@localhost mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2022-08-22T01:02:36.060467Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.25-16) initializing of server in progress as process 55647
2022-08-22T01:02:36.079563Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-08-22T01:02:36.488646Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
#显示root@localhost第一次登录的临时密码
2022-08-22T01:02:37.680946Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: PBEGEs;Kj0Yr
修改GreatSQL密码:
mysql -uroot -p'jcJ3Ncguf:ql'
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
发现启动用户是root
ps -ef | grep mysql
root 45090 3373 0 19:04 pts/0 00:00:00 grep --color=auto mysql
其余
相关命令
mysql -u root -p'123456'
stemctl status mysqld
systemctl mysql stop
service mysqld stop
service mysqld restart
service mysqld stop
ps -ef | grep mysql
mysql_secure_installation #安全加固
Navicat 连接问题
发现Navicat 连接不上,经排除是防火墙的问题
firewall-cmd --state #. 查看防火墙状态
systemctl stop firewalld.service
systemctl disable firewalld.service#关闭防火墙firewal
systemctl start firewalld.service #关闭防火墙firewall后开启
#开启端口
## zone -- 作用域
## add-port=80/tcp -- 添加端口,格式为:端口/通讯协议
## permanent -- 永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=3306/tcp --permanent
## 开启3306端口后,workbench或naivcat 就能连接到MySQL数据库了
防火墙 常用命令介绍
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
man firewall-cmd ##查看帮助
systemctl status firewalld.service ##查看防火墙状态
systemctl [start|stop|restart] firewalld.service ##启动|关闭|重新启动 防火墙
##查询端口号80 是否开启
firewall-cmd --query-port=80/tcp
更多命令,使用 firewall-cmd --help 查看帮助文件
参考链接:
https://imysql.com/my-cnf-wizard.html
https://www.php.cn/mysql-tutorials-485563.html
https://www.cnblogs.com/diantong/p/11088901.html