zoukankan      html  css  js  c++  java
  • Linux下安装MySQL

    网上找的Linux系统下Mysql安装教程大部分都是不完整,要么就是步骤凌乱,要不就是缺少步骤(例如需要开启防火墙授权访问端口),于是自己抽空整理了一份

    前置工作:安装前先卸载系统自带版本(没有则可以跳过此步骤)

    #查看系统自带版本
    rpm -qa | grep mariadb
    #卸载自带版本(多个需要逐个执行)
    yum -y remove 版本1
    yum -y remove 版本2
    ...

    安装包:mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

    下载地址:https://dev.mysql.com/downloads/mysql/

    下载安装包:

    查看历史发布版本,并根据系统选择对应的安装包下载,这里以mysql5.7,Linux64位系统为例(注:需要登录oracle账户下载)

    处理安装包:

    #进入此文件夹
    cd /usr/local
    #解压安装包
    tar -zxvf apk/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C ./
    #将解压文件重命名为mysql
    mv mysql-5.7.31-linux-glibc2.12-x86_64/ mysql

    准备工作:

    #创建mysql用户组
    groupadd mysql
    #创建mysql用户
    useradd -r -g mysql mysql
    #修改mysql文件夹的归属用户组以及用户
    chown -R mysql:mysql mysql/

    编写mysql配置文件,在/etc下新建配置文件my.cnf,并进行以下配置

    #mysql客户端配置
    [client]
    #端口号
    port=3306
    #socket文件目录(可创建多个实例)
    socket=/var/lib/mysql/mysql.sock
    
    [mysql]
    no-auto-rehash
    #允许单个记录写入最大数据量
    max_allowed_packet=128M
    default_character_set=utf8
    
    
    #mysql服务端配置
    [mysqld]
    #端口号
    port=3306
    #登录用户
    user=mysql
    #默认字符集
    character-set-server=utf8
    #socket文件目录(可创建多个实例)
    socket=/var/lib/mysql/mysql.sock
    #跳过dns反向解析
    skip-name-resolve
    log-slave-updates
    skip-external-locking
    explicit_defaults_for_timestamp=true
    #创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    #表名是否区分大小写(0-区分,1-不区分)
    lower_case_table_names=1
    
    #安装目录
    basedir=/usr/local/mysql
    #数据存放目录
    datadir=/usr/local/mysql/data
    #数据临时存放目录
    tmpdir=/usr/local/mysql/tmp
    #异常日志记录文件
    log-error=/usr/local/mysql/logs/error.log
    
    #允许最大连接数
    max_connections=1000
    max_user_connections=1000
    max_connect_errors=1000
    wait_timeout=14400
    interactive_timeout=100
    connect_timeout=20
    slave-net-timeout=30
    
    #二进制文件存储目录
    log-bin=/usr/local/mysql/logs/mysql-bin
    #二进制文件格式
    binlog_format=mixed
    #二进制文件的最大值
    max_binlog_size=128M
    #二进制文件缓存大小
    binlog_cache_size=1M
    #二进制文件的有效天数
    expire-logs-days=5
    #并发连接数
    back_log=500
    
    #开启慢查询
    slow-query-log
    #慢查询记录文件
    slow-query-log-file=/usr/local/mysql/logs/mysql-slow.log
    #慢查询阈值
    long_query_time=3
    #使没有使用索引的慢查询也能记录到慢速日志里
    #log_long_format
    
    #其它配置
    server-id=10001
    max-relay-log-size=256M
    relay-log=relay-bin
    transaction_isolation=READ-COMMITTED
    
    performance_schema=0
    #myisam_recover
    key_buffer_size=64M
    #允许单个记录写入最大数据量
    max_allowed_packet=16M
    #table_cache=3096
    table_open_cache=6144
    table_definition_cache=4096
    
    sort_buffer_size=128K
    read_buffer_size=1M
    read_rnd_buffer_size=1M
    join_buffer_size=128K
    
    myisam_sort_buffer_size=32M
    tmp_table_size=32M
    max_heap_table_size=64M
    query_cache_type=0
    query_cache_size=0
    bulk_insert_buffer_size=32M
    
    thread_cache_size=64
    #thread_concurrency=32
    thread_stack=192K
    skip-slave-start
    
    #InnoDB存储引擎
    innodb_data_home_dir=/usr/local/mysql/data
    innodb_log_group_home_dir=/usr/local/mysql/logs
    innodb_data_file_path=ibdata1:1G:autoextend
    
    innodb_buffer_pool_size=1G
    innodb_buffer_pool_instances=8
    
    #innodb_additional_mem_pool_size=16M
    
    innodb_log_file_size=200M
    innodb_log_buffer_size=16M
    innodb_log_files_in_group=3
    
    innodb_flush_log_at_trx_commit=0
    innodb_lock_wait_timeout=10
    innodb_sync_spin_loops=40
    
    innodb_max_dirty_pages_pct=90
    innodb_support_xa=0
    innodb_thread_concurrency=0
    innodb_thread_sleep_delay=500
    #innodb_file_io_threads=4
    innodb_concurrency_tickets=1000
    log_bin_trust_function_creators=1
    innodb_flush_method=O_DIRECT
    innodb_file_per_table
    innodb_read_io_threads=16
    innodb_write_io_threads=16
    innodb_io_capacity=2000
    innodb_file_format=Barracuda
    innodb_purge_threads=1
    innodb_purge_batch_size=32
    innodb_old_blocks_pct=75
    innodb_change_buffering=all
    innodb_stats_on_metadata=OFF
    
    
    [myisamchk]
    key_buffer_size=64M
    sort_buffer_size=512k
    read_buffer=2M
    write_buffer=2M
    
    
    [mysqlhotcopy]
    interactive-timeout
    
    
    [mysqld_safe]
    #malloc-lib=/usr/local/mysql/lib/mysql/libjemalloc.so

    创建my.cnf配置文件中所配置的目录并赋权限

    mkdir /var/lib/mysql
    chmod 777 /var/lib/mysql
    
    mkdir -p /usr/local/mysql/{data,tmp,logs}
    chmod 777 /usr/local/mysql

    正式安装mysql服务:

    #初始化
    ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    #查看初始密码
    less logs/error.log

    后置工作:

    #配置启动脚本
    cp ./support-files/mysql.server /etc/init.d/mysqld
    #设置开机自启动
    chkconfig mysqld on
    #检查开机自启动
    chkconfig --list mysqld

    出现以下信息表明mysqld 服务已经⽣效了,在2、3、4、5运⾏级别随系统启动⽽⾃动启动,以后可以直接使⽤service命令控制mysql的启停。

    #配置环境变量
    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    #使配置生效
    source /etc/profile
    #启动mysql服务
    service mysqld start

    #登录mysql服务
    mysql -uroot -p初始密码
    
    #修改root用户密码
    set password for root@'localhost' = password('study');
    #启用远程主机登录
    use mysql;
    update user set user.Host='%' where user.User='root';
    flush privileges;

    注:要使远程能够登录访问还得进行“防火墙授权访问端口”,具体操作可查看https://www.cnblogs.com/54hsh/p/13355413.html

    验证成果:

    授权端口后可以用可视化工具测试远程是否能够连接,这里使用navicat

    创建用户和数据库并赋权:

    #创建用户
    CREATE USER 'testuser'@'%' IDENTIFIED BY 'password';
    #创建数据库
    CREATE DATABASE IF NOT EXISTS test_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    #授权库表
    GRANT ALL PRIVILEGES ON test_db.* TO 'testuser'@'%' IDENTIFIED BY 'password';
    #刷新权限
    FLUSH PRIVILEGES;
  • 相关阅读:
    程序员是这样区分Null和Undefined
    JavaScript实现
    获取页面中任意一个元素距离body的偏移量
    js检测数据类型的方法你都掌握了几个?
    处理浏览器兼容你最喜欢用哪种方式
    算法竞赛入门经典 第四章 学习笔记 1
    算法竞赛入门经典 程序4-1 组合数
    算法竞赛入门经典 例题3-1 TeX中的引号
    算法竞赛入门经典 第3章 数组和字符串 学习笔记 3
    算法竞赛入门经典 第3章 数组和字符串 学习笔记 2
  • 原文地址:https://www.cnblogs.com/54hsh/p/13619618.html
Copyright © 2011-2022 走看看