zoukankan      html  css  js  c++  java
  • MYSQL INSTALLATION

    MYSQL INSTALLATION

    1 下载

    mysql 被收购后,不再提供源码,因此不可能再做源码安装。 想进行源码安装,可以选择Mariadb。

    Oracle mysql: https://dev.mysql.com/downloads/mysql/

    mariadb: https://downloads.mariadb.org/mariadb/+releases/ http://ftp.hosteurope.de/mirror/archive.mariadb.org/ 下载后,上传至服务器并解压。这是一般的步骤。对于不熟悉此操作的,请先熟悉 Linux基本操作.

    2 安装

    2.1 Mariadb源码安装

    使用源码安装,解决依赖是一个前提。所以,服务器可以使用Yum 源,使用源码安装是一个 不错的选择,因为很多选项可以进行配置。比如安装路径。组件选择等。

    2.1.1 版本

    操作系统 mariadb
    7.2.1511 10.1.40
    7.5.1804 10.2.25

    2.1.2 下载解压

    选择需要版本下载. 然后上传至服务器/opt 路径 并解压。比如我解压后的路径是 /opt/mariadb-10.2.25

    2.1.3 安装依赖包

    rpm -e --nodeps mariadb-libs
    yum install -y cmake ncurses-devel gcc gcc-c++ zlib-devel readline-devel openssl-devel libaio-devel mariadb-libs
    

    另外安装依赖于gnutls,p11-kit 两个包。请参阅 编译安装-> 生成makeFile–>错误2 xf*** 创建组、用户、相关目录

    groupadd mysql
    useradd -g mysql -G mysql -d /home/mysql mysql
    mkdir -p /usr/local/mysql
    mkdir -p /home/mysql/data
    mkdir -p /var/log/mysql
    mkdir -p /var/run/mysql
    chown -R mysql:mysql /usr/local/mysql
    chown -R mysql:mysql /home/mysql/data
    chown -R mysql:mysql /var/log/mysql
    chown -R mysql:mysql /var/run/mysql
    chcon -R system_u:object_r:mysqld_db_t:s0 /home/mysql/data
    

    2.1.4 编译安装

    1. 生成makeFile
      # 注意解压后的路径
      cd /opt/mariadb-10.3.15
      
      cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/home/mysql/data -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DSYSCONFDIR=/etc 
      -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_READLINE=1 
      -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_FEDERATEDX_STORAGE_ENGINE=1 
      -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITHOUT_TOKUDB=1 -DENABLE_DOWNLOADS=1
      
      错误1
      -- Performing Test HAVE_STDCXX11
      -- Performing Test HAVE_STDCXX11 - Failed
      -- Performing Test HAVE_STDCXX0X
      -- Performing Test HAVE_STDCXX0X - Failed
      CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:177 (message):
        /usr/bin/c++ doesn't support -std=c++11 or -std=c++0x, you need one that
        does.
      Call Stack (most recent call first):
        storage/tokudb/PerconaFT/CMakeLists.txt:38 (include)
      

      出现以上错误,是由于默认安装了tobudb. 此时,我们加上参数 -DWITHOUT_TOKUDB=1,表示不安装tokudb引擎. tokudb是MySQL中一款开源的存储引擎,可以管理大量数据并且有一些新的特性,这些是Innodb所不具备的,这里之所以不安装, 是因为一般计算机默认是没有Percona Server的,并且加载tokudb还要依赖jemalloc内存优化,一般开发中也是不用tokudb的, 所以暂时屏蔽掉,否则在系统中找不到依赖会出现如上错误。 – notes :: 编译失败后,需要执行 rm -f CMakeCache.txt 以清除编译缓存,才可以继续重新编译。

    2. install(软件安装)
      make && make install
      
      NOTES
      注意事项:
      重新时,需要清除旧的对象文件和缓存信息。 # make clean
      # rm -f CMakeCache.txt
      # rm -rf /etc/my.cnf
      
    3. 配置服务

      安装好后,可用于systemctl或者service 服务的文件会自动生成:<path>/support-files/mysql.server
      将此文件复制至/etc/init.d/ 路径即可。

      cd /usr/local/mysql
      cp support-files/mysql.server /etc/init.d/mysqld
      

    2.1.5 安装数据库

    scripts/mysql_install_db --user=mysql --datadir=/home/mysql/data
    

    2.1.6 修改环境变量

    这里我将Mysql的bin 路径加载到了系统默认加载路径中。看官们自己决定添加位置

    vi /etc/profile
    # Path manipulation
    if [ "$EUID" = "0" ]; then
        pathmunge /usr/sbin
        pathmunge /usr/local/sbin
        pathmunge /usr/local/mysql/bin    --> 添加此行
    else
        pathmunge /usr/local/sbin after
        pathmunge /usr/sbin after
    fi
    
    source /etc/profile
    

    2.1.7 配置参数文件

    2.1.8 启动

    /etc/init.d/mysqld start
    

    2.2 Mariadb rpm包安装

    在不能使用yum源的时候,只能选择使用rpm 包安装。
    需要下载的几个包为:

    • MariaDB-<version>-<platform>-x86_64-client.rpm
    • MariaDB-<version>-<platform>-x86_64-common.rpm
    • MariaDB-<version>-<platform>-x86_64-compat.rpm
    • MariaDB-<version>-<platform>-x86_64-server.rpm
    • boost-program-options-<version>-*.x86_64.rpm
    • galera-<version>-1.<release>.*.x86_64.rpm

    上传至服务器放到同一个路径下比如:mariadb_install_package,然后通过rpm安装:

    2.2.1 安装rpm包

    cd mariadb_install_package
    rpm -ivh ./*.rpm
    

    2.2.2 配置为服务项

    cp /usr/lib/systemd/system/mariadb.service /etc/init.d/mariadb
    systemctl start mariadb
    systemctl status mariadb
    systemctl stop mariadb
    

    2.3 Mysql 5.7 安装

    2.3.1 RPM包安装

    RPM 建议下载RPM bundle 版本的。否则在安装过程中出现依赖关系而安装失败,会很头疼。 RPM bundle版本中包含了所有的安装需要的rpm包. 根据需要可以单独下载:

    mysql-community-server-5.7.21-1.el7.x86_64.rpm
    mysql-community-common-5.7.21-1.el7.x86_64.rpm
    mysql-community-client-5.7.21-1.el7.x86_64.rpm
    mysql-community-libs-5.7.21-1.el7.x86_64.rpm
    

    安装

    rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm mysql-community-common-5.7.21-1.el7.x86_64.rpm mysql-community-client-5.7.21-1.el7.x86_64.rpm mysql-community-libs-5.7.21-1.el7.x86_64.rpm
    

    2.3.2 编辑配置文件

    配置文件内容详情请参阅 配置文件

    2.3.3 配置mysqld.service

    执行以下几个命令:

    systemctl enable mysqld  # 设置开机启动
    systemctl stop mysqld    # 停止mysql服务
    systemctl start mysqld   # 启动mysql服务
    

    需要注意的是尽量先调整好配置文件再启动mysql数据库。rpm 包安装的mysql,会在第一次启动的时候进行数据库初始化。生成最原始的mysql数据库文件及日志文件等。

    2.3.4 修改root用户密码

    1. 在没有调整my.cnf时

      grep "temporary password" /var/log/mysqld.log    #命令,返回结果最后冒号后面的字符串就是root的默认密码
      mysql -uroot -p                                  # 回车,输入上面找到的密码
      set password=password('密码');
      flush privileges;
      
    2. 调整过my.cnf 调整过my.cnf后,可能日志已经不在/var/log/mysqld.log 中。这时我们的日志不是固定的。有的人找不到日志的位置。因此可以通过直接修改mysql.user 内部表来实现修改密码。
      1. 调整my.cnf 在my.cnf 的[mysqld] 下面添加一行:skip-grant-tables

        [mysqld]
        skip-grant-tables
        .........
        
      2. 重启mysqld

        systemctl restart mysqld
        
      3. 登录mysql修改密码

        mysql -e "update mysql.user set authentication_string=password('密码') where user='root';"
        
      4. 恢复my.cnf 将skip-grant-tables 前面加上# 以注释掉此参数。如:

        [mysqld]
        # skip-grant-tables
        
      5. 重启mysql

        systemctl restart mysqld
        

    2.4 Mysql 5.6 安装

    2.4.1 解压安装

    tar -xvf MySQL-5.6.39-1.el7.x86_64.rpm-bundle.tar
    rpm -ivh ./MySQL*.rpm
    

    2.4.2 配置参数文件

    配置文件内容详情请参阅 配置文件

    2.4.3 初始化数据库

    /usr/bin/mysql_install_db --user=mysql --datadir=/data --keep-my-cnf
    

    2.4.4 启动数据库

    service mysql start
    

    2.5 准备配置文件内容

    一般情况下,配置文件的内容,除server_id,auto_increment* 需要根据节点数来调整, relay_log_purge需要根据架构来调整外,其他无需调整。

    参数会随着版本的改动而有所变动。所以这里的配置,也不是铁律,要根据版本进行调整 ,最后得到最适合自己的环境的配置。

    [mysqld]
    datadir=/data
    socket=/var/lib/mysql/mysql.sock
    init-connect='SET NAMES utf8'
    character-set-server=utf8
    lower_case_table_names = 1
    symbolic-links=0
    
    # Tunning settings
    #innodb storage configuration
    default-storage-engine=innodb
    innodb_file_per_table=1
    innodb_flush_log_at_trx_commit=2
    innodb_flush_method=O_DIRECT
    innodb_log_buffer_size=256M
    innodb_log_files_in_group=8
    transaction_isolation=READ-COMMITTED
    
    # Connection configurations
    max_connections=1000
    max_connect_errors=10000
    
    # query related
    query_cache_type=1
    query_cache_size=128M
    long_query_time=1
    
    #Memory Configuration
    ## For temp table
    max_heap_table_size=96M
    tmp_table_size=96M
    ## For sort / join / read
    sort_buffer_size=5M
    join_buffer_size=5M
    read_buffer_size=5M
    read_rnd_buffer_size=5M
    
    # For Myiasm if be used
    key_buffer_size=52M
    
    # For function
    log_bin_trust_function_creators=1
    
    # master — slave configurations
    server-id= 48
    log-bin=mysql-bin
    log-bin-index=mysql-bin.index
    binlog_format = MIXED
    sync-binlog=1
    expire-logs-days = 14
    auto_increment_offset=1        # —> 多主结构使用
    auto_increment_increment=2 # —> 多主结构使用
    skip-slave-start
    
    # 配置半同步复制
    plugin-load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
    rpl-semi-sync-master-enabled = 1
    rpl-semi-sync-slave-enabled = 1
    
    # 配置relay log . MHA结构中需要将relay_log_purge 设置为0. 其他主从结构配置为1
    relay_log_purge=1
    relay_log_recover=1
    
    [mysqld_safe]
    log-error=/var/log/mysql/mysql.log
    pid-file=/var/run/mysql/mysql.pid
    

    2.6 维护管理员用户

    管理员用户默认是root, 拥有最高的Mysql 管理权限。如果在最开始没有设置密码。同时,有可能有人会更喜欢使用root密码,如果他没有密码,那么 他很可能,把root密码改掉。此时我们便没有了管理权限。

    以防万一
    1. 设置一个没有人知道的root密码,虽然对于蓄意修改root密码的人来说,这没什么卵用。
    2. 添加一个新管理员用户

      insert into mysql.user ( Host,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,Repl_slave_priv,Repl_client_priv,Create_view_priv,Show_view_priv,Create_routine_priv,Alter_routine_priv,Create_user_priv,Event_priv,Trigger_priv,Create_tablespace_priv,ssl_type,ssl_cipher,x509_issuer,x509_subject,max_questions,max_updates,max_connections,max_user_connections,plugin,authentication_string,password_expired,password_last_changed,password_lifetime,account_locked)
      values('localhost','dbadmin','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0','mysql_native_password','','N','2019-11-22 18:07:06',NULL,'N' );
      

    3 ERRORS

    3.1 Can't open and lock privilege tables: Table 'mysql.XXX' doesn't exist

    这个问题一般是因为数据库初始化未完成。

    默认初始化命令: scripts/mysql_install_db –basedir=<basedir> –datadir=<datadir> –user=mysql

    Author: halberd

    Created: 2020-02-26 Wed 21:32

    Validate

  • 相关阅读:
    神马搜索 面试小结
    我的第一篇paper
    【转载】技巧:Vim 的纵向编辑模式
    实习求职小结
    将博客园界面打造成Hexo经典主题Light
    试一下Markdown
    四色标记算法
    射雕三部曲的优美片段
    Docker
    Sublime Text 3 文档
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/12369186.html
Copyright © 2011-2022 走看看