linux安装mysql

1、解压sql

复制代码
tar -xvJf mysql-8.0.43-linux-glibc2.28-x86_64.tar.xz -C /opt/install/

2、修改文件名

复制代码
mv mysql-8.0.43-linux-glibc2.28-x86_64 mysql8043

3、创建data/data以及data/logs

复制代码
mkdir -p data/data
mkdir -p data/logs

4、创建用户组以及用户和密码然后授权用户

复制代码
#创建用户组:
groupadd mysql
useradd -g mysql mysql
# 用户授权
chown -R mysql:mysql /opt/install/mysql8043/data/

5、初始化配置文件

  • 注:msyql.pid以及mysql.sock必须放在授权后的文件夹下

    cat >> /etc/my.cnf << EOF
    [mysqld]

    允许访问地址

    bind-address = 0.0.0.0

    服务运行端口

    port = 3306

    服务运行用户

    user = mysql

    安装基础目录

    basedir = /opt/install/mysql8043

    套接字文件路径,用于连接数据库服务

    socket = /opt/install/mysql8043/data/data/mysqld.sock

    数据文件存储路径

    datadir = /opt/install/mysql8043/data/data

    pid文件存储路径

    pid-file = /opt/install/mysql8043/data/data/mysql.pid

    错误日志文件路径

    log-error = /opt/install/mysql8043/data/logs/mysqld.log

    服务端使用的字符集默认为8比特编码的latin1字符集

    character-set-server = utf8mb4
    collation-server = utf8mb4_general_ci

    修改默认存储引擎

    default-storage-engine = InnoDB

    密码认证插件

    default-authentication-plugin = mysql_native_password

    最大连接数

    max_connections = 1024

    跳过主机名解析

    skip-name-resolve

    表名忽略大小写

    lower_case_table_names = 1

    设置时区

    default-time-zone='+08:00'

    空闲连接超时时间

    wait_timeout = 3600
    #-------------主从复制设置-----------------------

    服务器ID,集群必填配置,区分机器编号,每台机器不同

    server_id = 10

    开启二进制日志,多用于主从复制,数据恢复

    log_bin = /opt/install/mysql8043/data/data/binlog
    #设置binlog模式为行级记录
    binlog_format = row
    #binlog启用rows_query_event事件,可以记录原始的 SQL,如果不开启的话,则只能获取 SQL 对应的行数据
    binlog_rows_query_log_events = 1
    #设置binlog日志过期时间
    expire_logs_days = 7

    从服务器上中继日志的文件名

    relay-log = relay-log-bin

    从服务器中继日志索引文件名

    relay-log-index = slave-relay-bin.index
    #-------------多线程主从复制设置-----------------------
    #基于组提交的并行复制方式,同一个数据库下可以有多个线程
    slave-parallel-type = LOGICAL_CLOCK
    #即可有8个线程来进行并行复制
    slave-parallel-workers = 4
    #以下两个参数是把主从复制信息存储到 innodb 表中,默认情况下主从复制信息是存储到文件系统中的,如果从服务器宕机,很容易出现文件记录和实际同步信息不同的情况,存储到表中则可以通过 innodb 的崩溃恢复机制来保证数据记录的一致性。并且性能可以有 50% ~ 80% 的提升
    master_info_repository = TABLE
    relay_log_info_repository = TABLE
    relay_log_recovery = ON
    #更改SQL模式,去除SQL模式中分组的ONLY_FULL_GROUP_BY
    #mysql8.0 删除了NO_AUTO_CREATE_USER
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    #mysql5.x
    #sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    #是否支持符号链接,即数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
    symbolic-links = 0
    #是否开启慢查询日志收集
    slow_query_log = 1
    #慢查询时间,单位为秒,超过则为慢查询
    long_query_time = 1
    #慢查询记录的日志文件
    slow_query_log_file = /opt/install/mysql8043/data/data/mysql-slow.log
    #-------------InnoDB性能优化设置-----------------------
    #1,设置索引和数据缓冲区大小

    该设置对 InnoDB 表来说非常重要,因为 InnoDB 相比 MyISAM 表对缓冲更为敏感,如果使用默认值十分影响性能。一般设置物理内存的 60% - 70%

    innodb_buffer_pool_size = 1G
    #2,设置Redo日志文件大小

    通常,redo日志文件的总大小应足够大,以使服务器可以消除工作负载活动中的高峰和低谷,这通常意味着有足够的redo日志空间来处理一个小时以上的写活动。

    设置完后一定记得把MySQL安装目录地址下的和删除掉。否则重启MySQL启动失败

    redo日志大小,设置为 innodb_buffer_pool_size * 0.25

    innodb_log_file_size = 200M

    默认值为2,即2组redo日志

    innodb_log_files_in_group = 2
    #3,设置缓冲池实例个数

    innodb_buffer_pool_instances 可以开启多个内存缓冲池,把需要缓冲的数据 hash 到不同的缓冲池中,这样可以并行的内存读写。该参数值默认为 1,推荐设置 4 个或 8 个。

    innodb_buffer_pool_instances = 4
    #4,设置日志同步到磁盘方式
    #(1)MySQL 的事务日志中,为了性能和效率,可以配置每次事务提交后是否将日志缓冲刷到 log file 以进行数据持久化,这就是变量 innodb_flush_log_at_trx_commit 的作用。innodb_flush_log_at_trx_commit 有 3 种可选值:

    0:代表大约每秒写入到日志并同步到磁盘,数据库故障会丢失 1 秒左右事务数据。

    1:为每执行一条 SQL 后写入到日志并同步到磁盘,I/O 开销大,执行完 SQL 要等待日志读写,这种方式即使系统崩溃也不会丢失任何数据,但效率低。

    2:代表只把日志写入到系统缓存区,再每秒同步到磁盘,效率很高,如果服务器故障,才会丢失事务数据。

    #(2)对数据安全性要求不是很高的推荐设置 2,性能高,修改后效果明显。
    innodb_flush_log_at_trx_commit = 2
    #5,设置独享表空间

    默认是共享表空间(参数值为 0),共享表空间 idbdata 文件不断增大,影响一定的 I/O 性能。推荐开启独立表空间模式(参数值为 1),每个表的索引和数据都存在自己独立的表空间中,可以实现单表在不同数据库中移动。

    共享表空间:某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在 data 目录下。默认的文件名为 :ibdata1 初始化为 10M。

    独占表空间:每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个 .frm 表描述文件,还有一个 .ibd 文件。其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。

    innodb_file_per_table = 1
    [client]
    socket = /opt/install/mysql8043/data/data/mysqld.sock
    default-character-set = utf8mb4
    [mysqld_safe]
    socket = /opt/install/mysql8043/data/data/mysqld.sock
    [mysql]
    socket = /opt/install/mysql8043/data/data/mysqld.sock
    default-character-set = utf8mb4
    EOF

6、配置服务

复制代码
cat >> /etc/systemd/system/mysql.service << EOF
[Unit]
[Unit]
Description=MySQL Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/install/mysql8043/support-files/mysql.server start
ExecStop=//opt/install/mysql8043/support-files/mysql.server stop
User=mysql
Group=mysql
[Install]
WantedBy=multi-user.target

EOF

7、初始化数据库

复制代码
/opt/install/mysql8043/bin/mysqld --initialize --user=mysql --basedir=/opt/install/mysql8043 --datadir=/opt/install/mysql8043/data/data
  • 初始化会生成登录密码存放路径为设置的日志路径:/opt/install/mysql8043/data/data

8、设置为开机启动(待测)

复制代码
cp -a ./support-files/mysql.server /etc/init.d/mysql

chmod +x /etc/init.d/mysql

chkconfig --add mysql

9、启动服务

复制代码
systemctl daemon-reload
systemctl enable mysql --now
# 查看mysql状态
sudo systemctl start mysqld.service
sudo systemctl status mysqld.service
sudo systemctl stop mysqld.service

10、获取初始密码并登录修改密码

复制代码
./mysql -u root -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 修改表获取远程连接权限,登录数据库后执行下面命令
use mysql;
update user set host="%" where user="root";
FLUSH PRIVILEGES;
相关推荐
学习3人组2 小时前
Node.js 网站服务器开发
运维·服务器·node.js
来知晓2 小时前
Linux:WSL内存空间管理之清完内存C盘可用空间不增问题解决
linux·运维·服务器
大聪明-PLUS2 小时前
嵌入式 Linux 初学者指南 – 第 2 部分
linux·嵌入式·arm·smarc
深圳市恒讯科技3 小时前
如何在服务器上安装和配置数据库(如MySQL)?
服务器·数据库·mysql
feng_blog66883 小时前
【信创系统】统信UOS Linux4.19+libbpf开发ebpf程序实现文件操作的实时监控
linux·ebpf
wanhengidc3 小时前
云手机能够流畅运行大型游戏吗
运维·服务器·游戏·智能手机·云计算
员大头硬花生3 小时前
七、InnoDB引擎-架构-后台线程
java·数据库·mysql
IT教程资源C4 小时前
(N_151)基于微信小程序校园学生活动管理平台
mysql·vue·前后端分离·校园活动小程序·springboot校园活动
繁华的地方不一定留下你的脚印4 小时前
ubuntu18.04版本配置静态IP并且可以上网(解决配置静态IP不能额上网的问题)
运维·服务器