标签: 数据库

  • Linux – mysql数据库的安装

    mysql数据库的配置

    安装mysql

    使用官方仓库安装

    Centos:

    首先导入 MySQL 官方的 Yum 源配置文件:

    sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm

    默认启用的是 MySQL 8.0,如果需要安装 5.7 版本,需修改配置文件:

    sudo vi /etc/yum.repos.d/mysql-community.repo

    [mysql57-community] 部分的 enabled=0 改为 enabled=1

    并将 [mysql80-community]enabled=1 改为 enabled=0

    Ubuntu:

    sudo apt update
    sudo apt install -y mysql-server

    默认安装的依然是 mysql 8.0 版本

    要安装 5.7 版本则需要添加 MySQL 官方源

    wget -qO - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | sudo apt-key add -
    echo "deb http://repo.mysql.com/apt/ubuntu/ $(lsb_release -cs) mysql-5.7" | sudo tee /etc/apt/sources.list.d/mysql.list
    sudo apt update

    然后安装时指定 5.7 版本

    sudo apt install -y mysql-server-5.7

    安装完成后,启动服务并添加开机启动

    sudo yum install -y mysql-community-server
    sudo systemctl start mysqld
    sudo systemctl enable mysqld

    MySQL 8.0 安装后会生成一个临时密码:

    sudo grep 'temporary password' /var/log/mysqld.log

    Mysql 5.7 则默认为空密码

    编译安装
    安装准备

    [postsbox post_id=7]

    创建 MySQL 用户和组

    sudo groupadd mysql
    sudo useradd -r -g mysql -s /bin/false mysql

    下载 mysql 5.7版本源码

    wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.40.tar.gz

    下载 mysql 8.0版本源码

    wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz

    解压并进入到解压后目录

    tar -zxf 下载的mysql文件名
    cd 解压后的目录

    然后进行编译安装

    编译参数 mysql-5.7

    cmake . \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DSYSCONFDIR=/etc \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DEXTRA_CHARSETS=all \
    -DDEFAULT_CHARSET=utf8mb4 \
    -DDEFAULT_COLLATION=utf8mb4_unicode_ci \
    -DWITH_SSL=system \
    -DWITH_ZLIB=system \
    -DWITH_LIBWRAP=0 \
    -DMYSQL_TCP_PORT=3306

    mysql-8.0版本需要添加一下编译参数

    -DWITH_BOOST=boost \
    -DDOWNLOAD_BOOST=1

    编译并安装,如果多线程编译出错把 -j 参数去除

    make -j$(nproc)  # 使用多线程编译
    sudo make install

    配置环境变量

    echo 'export PATH=/usr/local/mysql/bin:$PATH' | sudo tee -a /etc/profile
    source /etc/profile

    初始化数据库

    sudo mkdir -p /var/lib/mysql
    sudo chown mysql:mysql /var/lib/mysql
    sudo chmod 755 /var/lib/mysql
    
    cd /usr/local/mysql
    sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    注意:初始化完成后,记录临时生成的 root 密码(输出中包含 A temporary password is generated for root@localhost:

    配置为系统服务后即可启动

    sudo cp support-files/mysql.server /etc/init.d/mysql
    sudo chmod +x /etc/init.d/mysql
    sudo systemctl daemon-reload
    sudo systemctl enable mysql
    sudo systemctl start mysql
    编译参数说明
    参数名 说明
    -DCMAKE_INSTALL_PREFIX 指定 MySQL 安装目录
    -DMYSQL_DATADIR 指定数据文件存放目录
    -DSYSCONFDIR 指定配置文件目录
    -DWITH_MYISAM_STORAGE_ENGINE 启用 MyISAM 存储引擎
    -DWITH_INNOBASE_STORAGE_ENGINE 启用 InnoDB 存储引擎(默认事务引擎)
    -DWITH_ARCHIVE_STORAGE_ENGINE 启用 Archive 存储引擎(适合日志记录)
    -DWITH_BLACKHOLE_STORAGE_ENGINE 启用 Blackhole 存储引擎(丢弃所有写入数据)
    -DWITH_PERFSCHEMA_STORAGE_ENGINE 启用 Performance Schema(性能监控)
    -DMYSQL_UNIX_ADDR 指定 Unix 套接字文件路径(如 /var/lib/mysql/mysql.sock
    -DENABLED_LOCAL_INFILE 启用 LOAD DATA LOCAL INFILE 功能(导入本地文件)
    -DWITH_PARTITION_STORAGE_ENGINE 启用分区表支持
    -DWITH_SSL 指定 SSL 库位置(如 system 使用系统已安装的库)
    -DWITH_ZLIB 指定 Zlib 库位置(如 system 使用系统已安装的库)
    -DWITH_LIBWRAP 启用 TCP Wrappers 安全功能(0 为禁用)
    -DMYSQL_TCP_PORT 指定 MySQL 监听端口(默认 3306)
    -DWITH_BOOST 指定 Boost 库路径(MySQL 8.0 强制依赖)
    -DDOWNLOAD_BOOST 自动下载 Boost 库(值为 1 时自动下载)
    -DDEFAULT_ENCRYPTION_ALGORITHM 指定默认加密算法(如 aes_256_cbc
    -DENABLED_PROFILING 启用性能分析(调试用)
    -DDEFAULT_AUTHENTICATION_PLUGIN 指定默认认证插件(如 mysql_native_password 兼容旧客户端)
    -DWITH_DEBUG 启用调试模式(编译时间更长,生产环境建议禁用)
    -DWITH_EMBEDDED_SERVER 编译嵌入式服务器(用于应用程序内嵌 MySQL)
    -DEXTRA_CHARSETS 指定额外字符集支持(如 all 包含所有字符集)
    -DDEFAULT_CHARSET 指定默认字符集(MySQL 8.0 默认 utf8mb4
    -DDEFAULT_COLLATION 指定默认排序规则(如 utf8mb4_unicode_ci