1. 下载
官网下载最新的源码包:
2. 安装
2.1 创建用户
为了方便数据库管理,对于安装的 MySQL 数据库,生产上我们都会建立一个 mysql 用户和 mysql 用户组:
# 添加mysql用户组
groupadd mysql
# 添加mysql用户
useradd -g mysql mysql -d /home/mysql
# 修改mysql用户的登陆密码
passwd mysql
2.2 解压缩
在 / usr/local / 中解压压缩包,并改名为 mysql
cd /usr/local/src
tar xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
# 改名为mysql
mv mysql-8.0.32-linux-glibc2.12-x86_64 /usr/local/mysql
并赋予用户读写权限(此处也可以换位你的用户)
chown -R mysql:mysql /usr/local/mysql/
2.3 创建配置文件
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
log_error=/data/mysql/mysqld.log
pid_file=/data/mysql/mysqld.pid
character_set_server=utf8 # 修改数据库级字符集
init_connect='SET NAMES utf8' # 普通用户连接时隐式执行"SET NAMES utf8"命令设置客户端的编码
max_connections=60000 # 设置最大连接数
open_files_limit=65535 # 设置能够打开的操作系统文件描述符最大数
innodb_buffer_pool_size=48G # 设置缓存池大小,建议为服务器内存的75%
innodb_write_io_threads=32 # 设置写线程个数,与服务器核数一致
innodb_read_io_threads=32 # 设置读线程个数,与服务器核数一致
skip_name_resolve=1 # 不对客户端连接进行DNS反向解析
interactive_timeout=3600 # MySQL服务器关闭交互式连接(MySQL客户端连接)前等待的秒数
wait_timeout=3600 # MySQL服务器关闭非交互连接(jdbc等程序连接)之前等待的秒数
max_allowed_packet=10M # 一次传输数据包的过程中允许的最大数据包大小
thread_stack=512k # 每个连接线程被创建时,MySQL给它分配的内存大小
# binlog相关配置
server_id=1 # 服务标识,不能与其他数据库id重复
log_slave_updates=1 # 作为从库时,将从主库复制的数据也计入binlog(级联同步时必须配置)(因为会记录server-id,所以主主同步时开启此选项并不会环)
expire_logs_days=14 # binlog保留时间14天
max_binlog_size=512M # 单个binlog文件最大512M
binlog_format=MIXED # 日志的记录格式
log_bin=mysql-bin # binlog文件日志名
log_timestamps='system' # 日志内记录时间戳使用系统时间
#slave-skip-errors=1032,1062,1007,1146 # 跳过主从复制中遇到的指定类型的错误
slave_parallel_workers=8 # 开启多线程并发复制并指定线程数,减少从库复制延迟
slave_parallel_type=LOGICAL_CLOCK # 选择并发复制方式
slave_preserve_commit_order=1 # 保证从库回放relaylog事务的顺序与主库完全相同
# 以下两项配置即将废弃
master_info_repository=TABLE # 作为从库时将主库状态和连接信息记录到mysql.slave_master_info表;若配置为FILE则以文件的形式保存在磁盘数据目录中
relay_log_info_repository=TABLE # 作为从库时将其在中继日志中的位置记录到系统数据库中的mysql.slave_relay_log_info表;若配置为FILE则保存到磁盘
# 慢日志相关配置
slow_query_log=1 # 开启慢日志
long_query_time=3 # 设置慢日志阈值时间
slow_query_log_file=/data/mysql/mysqld-slow.log # 指定慢日志文件
default_authentication_plugin=mysql_native_password # 修改密码认证插件以兼容老版本客户端
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
2.4 初始化文件
- 初始化 log 文件,防止没有权限。
#手动编辑一下日志文件,什么也不用写,直接保存退出
mkdir /data/mysql/
vim /data/mysql/mysqld.log
:wq
chmod 777 /data/mysql/mysqld.log
chown mysql.mysql -R /data/mysql/
- 初始化数据目录,防止没有权限。
# 创建数据目录
mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql
- 初始化数据库
# 初始化数据库,并指定启动mysql的用户,否则就会在启动MySQL时出现权限不足的问题
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8.0 --datadir=/data/mysql/data
初始化完成后,在my.cnf
中配置的datadir
目录(/var/log/mysqld.log
)下生成一个error.log
文件,里面记录了root
用户的随机密码。
cat /data/mysql/mysqld.log
执行后记录最后一点:root@localhost: xxxxx
。 这里的xxxxx
就是初始密码。
2.5 启动数据库
启动数据库
#源目录启动:
/usr/local/mysql/support-files/mysql.server start
并设置开机自启动服务:
# 复制启动脚本到资源目录
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# 增加mysqld服务控制脚本执行权限
chmod +x /etc/rc.d/init.d/mysqld
# 将mysqld服务加入到系统服务
chkconfig --add mysqld
# 检查mysqld服务是否已经生效
chkconfig --list mysqld
# 启动mysql,或者稍后下一步再启动。
systemctl start mysqld
systemctl enable mysqld
从此就可以使用 systemd 命令启动 / 停止服务:
systemctl start/stop/restart mysqld
2.6 配置环境变量
为了更好的操作 mysql,配置环境变量。
vim /root/.bash_profile
export PATH=$PATH:/usr/local/mysql/bin
# 立即生效
source /root/.bash_profile
# openeuler中的libtinfo版本升级了,需要重新创建软链
cd /usr/lib64
ls libtinfo*
# libtinfo.so.6 libtinfo.so.6.3
ln -s /usr/lib64/libtinfo.so.6.3 /usr/lib64/libtinfo.so.5
2.7 登录,修改密码
必须修改初始的随机密码:
# 登陆mysql的root用户
mysql -uroot -p
# 输入2.4生成的 随机密码
# 修改root用户密码为123456
alter user 'root'@'localhost' identified by 'Sjfy@2023';
flush privileges
3 使用 mysql
3.1 用户建立
以下命令只需要改动 用户名 和密码:
create user '用户名'@'%' identified by '密码';
grant all privileges on *.* to '用户名'@'%' with grant option;
flush privileges;
其中通配符 % 表示让该用户可以从任意远程主机登陆。
3.2 创建数据库
登陆用户后:
# 查询现有的数据库:
show databases;
# 创建
CREATE DATABASE 数据库名;
# 进入数据库:
use 数据库名;
# 查看所有的表
show tables;
# 退出:
exit
第一次评论