Linux安装mysql(yum)

  1. 作者QQ:67065435 QQ群:669756510

  2. 本站内容全部为作者原创,转载请注明出处!

  3. 安装前的准备

    yum -y --nogpgcheck \
    install \
    libaio \
    libtool \
    net-tools \
    bison-devel \
    libaio-devel \
    ncurses-devel \
    perl-Data-Dumper
    
  4. 获取rpm包

    wget --no-check-certificate -c http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
    
  5. 安装rpm包

    rpm -ivh mysql57-community-release-el7-10.noarch.rpm
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    
  6. 通过rpm包安装mysql

    yum -y --nogpgcheck install mysql-server
    
  7. 修改文件打开数上限

    # 系统文件打开数上限
    vim /etc/security/limits.conf
    
    * soft nproc 65535
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    
    ESC
    :wq
    
    # MySQL文件打开数上限
    vim /usr/lib/systemd/system/mysqld.service
    
    LimitNOFILE=65535
    
    ESC
    :wq
    
    systemctl daemon-reload
    
  8. 修改my.conf

    vim /etc/my.cnf
    
    [client]
    default-character-set=utf8mb4
    
    [mysql]
    default-character-set=utf8mb4
    
    [mysqld]
    innodb-file-per-table=1
    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    
    datadir=/data/mysql
    socket=/var/lib/mysql/mysql.sock
    symbolic-links=0
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    # 内存与缓存优化
    innodb_buffer_pool_size = 512M
    innodb_log_buffer_size = 16M
    tmp_table_size = 32M
    max_heap_table_size = 32M
    sort_buffer_size = 256K
    read_buffer_size = 256K
    join_buffer_size = 256K
    
    # 连接与超时控制
    max_connections = 50
    wait_timeout = 300
    interactive_timeout = 300
    
    # 二进制日志
    server_id = 1
    log_bin = /data/mysql/mysql-bin
    binlog_format = ROW
    expire_logs_days = 7
    max_binlog_size = 100M
    sync_binlog = 1
    
    # 性能与安全优化
    performance_schema = OFF
    skip-name-resolve
    sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    
    ESC
    :wq
    
  9. 创建数据文件目录、所属组、用户改为mysql

    mkdir /data
    mkdir /data/mysql
    chown -R mysql:mysql /etc/my.cnf
    chown -R mysql:mysql /data/mysql/
    chown -R mysql:mysql /var/*/mysql*
    
  10. 修改SELinux

    vim /etc/sysconfig/selinux
    
    SELINUX=disabled
    
    ESC
    :wq
    
    setenforce 0
    
  11. 启动数据库,生成socket文件

    systemctl enable mysqld
    systemctl start mysqld
    # 因为配置文件中指定了
    log-error=/var/log/mysqld.log
    # 所以初始密码在如下文件中
    /var/log/mysqld.log
    cat /var/log/mysqld.log|grep password
    # 结果显示
    A temporary password is generated for root@localhost: **************
    
  12. 修改数据库初始密码

    mysql -u root -p
    # 输入原始密码
    **************
    # 设置允许使用弱密码
    SET GLOBAL validate_password_policy=0;
    ALTER USER 'root'@'localhost' IDENTIFIED BY '**************';
    GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '**************' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    QUIT;
    
  13. 初始化数据库(除了密码一律选择Y)

    # 如果是数据库【安装】则只执行下面这步
    mysql_secure_installation
    
    # 如果是数据库【升级】则只执行下面这步(**************表示数据库之前的密码)
    mysql_upgrade -u root -p
    **************
    
  14. 配置防火墙

    systemctl unmask firewalld
    systemctl enable firewalld
    systemctl start  firewalld
    firewall-cmd --permanent --zone=public --add-port=3306/tcp
    firewall-cmd --reload
    
  15. 测试启动、停止、重启mysql

    #启用并启动
    systemctl enable mysqld
    systemctl start mysqld
    #禁用并关闭
    systemctl disable mysqld
    systemctl stop mysqld
    #启用并重新启动
    systemctl enable mysqld
    systemctl restart mysqld
    
  16. 设置外部访问密码

    # 数据库名-通配符及格式:
        *[允许操作所有数据库]
        %pay%[允许操作名字包含'pay'的数据库]
        mydatabase[仅允许操作'mydatabase'数据库]
    # 表名-通配符及格式:
        *[允许操作所有表]
        %pay%[允许操作名字包含'pay'的表]
        mytable[仅允许操作'mytable'表]
    # ip地址-通配符及格式:
        %/0.0.0.0[允许任意IP访问]
        xxx.xxx.xxx.xxx[仅限公网访问]
        192.168.x.xxx[仅限局域网访问]
        localhost/127.0.0.1/::1[仅限本机访问]
    
    # 数据库授权格式
    GRANT 权限名 ON BASE白名单.TABLE白名单 TO '用户'@'HOST白名单' IDENTIFIED BY '用户密码' WITH GRANT OPTION;
    # 刷新权限
    FLUSH PRIVILEGES;
    
    # 为任意数据库表 任意操作 分配root用户,仅限本地访问
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'::1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    
    # 为任意数据库表 任意操作 分配mysql用户,任意IP访问(安装调试阶段、本地开发使用,用后即删)
    GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '**************' WITH GRANT OPTION;
    
    # 为任意数据库表 增删改查 分配单独用户,为不同的业务分配专属用户
    GRANT INSERT ON *.* TO 'insert1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT DELETE ON *.* TO 'delete1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT UPDATE ON *.* TO 'update1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    GRANT SELECT ON *.* TO 'select1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION;
    
    # 刷新权限
    FLUSH PRIVILEGES;
    
  17. 官方YUM源码

  18. 官方YUM安装
Copyright © 鲸小鱼 2012-∞ all right reserved,powered by Gitbook修订: 2026-10-09 18:08

results matching ""

    No results matching ""