zoukankan      html  css  js  c++  java
  • 安装MYSQL到Ubuntu(APT)

    ## 运行环境 系统版本:Ubuntu 16.04.6 LTS 软件版本:MYSQL-5.7 硬件要求:无

    安装过程

    1、安装APT-MYSQL存储库

    APT-MYSQL存储库由MYSQL官网提供。选择安装MYSQL-5.7版本。

    root@localhost:~# wget https://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
    root@localhost:~# dpkg -i mysql-apt-config_0.8.11-1_all.deb
    

    2、更新APT缓存

    root@localhost:~# apt-get update
    

    3、安装MYSQL

    安装过程中会弹出一个图形化界面,需要我们输入一个高强度的MYSQL超级管理员“root”账号的密码,输入完成后即可完成安装,并且MYSQL服务会自动启动。
    注:这里输入的密码只用于安装MYSQL,后面不会使用。

    root@localhost:~# apt-get -y install mysql-community-server --allow-unauthenticated
    


    4、创建一个数据库实例,停止服务

    MYSQL在安装完成时,会自动启动MYSQL服务,我们需要将其停止。

    root@localhost:~# systemctl stop mysql
    

    5、创建一个数据库实例,创建相关目录并授权

    root@localhost:~# mkdir -p /data/mysql/data
    root@localhost:~# mkdir -p /data/mysql/binlog
    root@localhost:~# mkdir -p /data/mysql/relaylog
    root@localhost:~# mkdir -p /data/mysql/log
    root@localhost:~# chown -R mysql.mysql /data/mysql
    

    6、创建一个数据库实例,创建配置文件

    root@localhost:~# vim /data/mysql/my.cnf
    [mysqld]
    ### basic ###
    user = mysql
    server_id = 1
    bind-address = 0.0.0.0
    port = 43306
    pid-file = /data/mysql/mysqld.pid
    socket = /data/mysql/mysqld.sock
    datadir = /data/mysql/data
    default_storage_engine = InnoDB
    # explicit_defaults_for_timestamp = true
    symbolic-links = 0
    
    ### skip password ###
    skip-grant-tables = false
    
    ### errorlog ###
    log_error = /data/mysql/log/error.log
    
    ### binlog ###
    log-bin = /data/mysql/binlog/mysql-bin
    log_bin_index = /data/mysql/binlog/mysql-bin.index
    binlog_cache_size = 4MB
    max_binlog_size = 200MB
    # log_bin_trust_function_creators = 1
    # expire_logs_days = 30
    
    ### relaylog ###
    relay-log = /data/mysql/relaylog/mysql-relay-bin
    relay_log_index = /data/mysql/relaylog/mysql-relay-bin.index
    
    ### slowlog ###
    slow_query_log = ON
    slow_query_log_file = /data/mysql/log/slow.log
    long_query_time = 10
    
    ### network ###
    back_log = 512
    max_allowed_packet = 64MB
    max_connections = 1024
    max_connect_errors = 100
    
    ### buffer ###
    # join_buffer_size = 1MB
    # read_buffer_size = 1MB
    # read_rnd_buffer_size = 1MB
    # sort_buffer_size = 1MB
    
    ### query_cache ###
    query_cache_type = ON
    query_cache_size = 256MB
    table_open_cache = 5000
    thread_cache_size = 16
    
    ### innodb ###
    innodb_log_group_home_dir = /data/mysql/data
    innodb_data_home_dir = /data/mysql/data
    innodb_data_file_path = ibdata1:1G:autoextend
    # innodb_buffer_pool_size = 2GB
    # innodb_buffer_pool_instances = 1
    innodb_flush_method = O_DIRECT
    innodb_flush_log_at_trx_commit = 2
    innodb_log_file_size = 2GB
    innodb_log_files_in_group = 2
    innodb_log_buffer_size = 16MB
    innodb_read_io_threads = 4
    innodb_write_io_threads = 4
    innodb_lock_wait_timeout = 60
    innodb_thread_concurrency = 4
    innodb_open_files = 65535
    open-files-limit = 65535
    root@localhost:~# vim /etc/mysql/my.cnf
    [mysql]
    socket = /data/mysql/mysqld.sock
     
    [mysqladmin]
    socket = /data/mysql/mysqld.sock
     
    [mysqldump]
    socket = /data/mysql/mysqld.sock
    

    7、创建一个数据库实例,配置Apparmor

    Apparmor是Ubuntu下一个应用防火墙,相当于CentOS中的Selinux,它控制了应用对文件系统的操作权限。我们需要添加相关条目,允许MYSQL进程对相关目录拥有可操纵权限。

    root@localhost:~# vim /etc/apparmor.d/usr.sbin.mysqld
    /usr/sbin/mysqld {
      /data/mysql/ r,
      /data/mysql/** rwk,
     
      /data/mysql/data/ r,
      /data/mysql/data/** rwk,
     
      /data/mysql/binlog/ r,
      /data/mysql/binlog/** rwk,
     
      /data/mysql/relaylog/ r,
      /data/mysql/relaylog/** rwk,
     
      /data/mysql/log/ r,
      /data/mysql/log/** rwk,
    ...
    }
    root@localhost:~# systemctl restart apparmor.service
    

    8、创建一个数据库实例,初始化

    初次运行,我们需要初始化数据库实例,生成基础数据库。

    root@localhost:~# mysqld --defaults-file=/data/mysql/my.cnf --initialize
    

    9、创建一个数据库实例,修改系统服务控制

    将数据库实例服务交由系统管理工具“systemctl”托管。

    root@localhost:~# vim /lib/systemd/system/mysql.service
    [Unit]
    Description=MySQL Community Server
    After=network.target
     
    [Install]
    WantedBy=multi-user.target
     
    [Service]
    User=mysql
    Group=mysql
    Type=forking
    PermissionsStartOnly=true
    PIDFile=/data/mysql/mysqld.pid
    #ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
    ExecStart=/usr/sbin/mysqld --defaults-file=/data/mysql/my.cnf --daemonize
    TimeoutSec=600
    LimitNOFILE = 65535
    Restart=on-failure
    RestartPreventExitStatus=1
    RuntimeDirectory=mysqld
    RuntimeDirectoryMode=755
    

    10、创建一个数据库实例,启动服务

    root@localhost:~# systemctl daemon-reload
    root@localhost:~# systemctl start mysql
    root@localhost:~# systemctl enable mysql
    root@localhost:~# netstat -lnupt  |grep mysql
    tcp        0      0 0.0.0.0:43306           0.0.0.0:*               LISTEN      13046/mysqld    
    

    11、创建一个数据库实例,重置超级管理员密码

    我们需要通过错误日志获取初始化时生成的临时密码。
    密码必须符合复杂性要求,需要字母大小写+数字+特殊符号。

    root@localhost~# cat /data/mysql/log/error.log |grep password
    2019-05-05T03:55:21.001110Z 1 [Note] A temporary password is generated for root@localhost: qUJjC#oae0<l
    root@localhost:~# mysqladmin -uroot -p'qUJjC#oae0<l' password 'ABCabc-123'
    

    12、访问测试

    root@localhost:~# mysql -uroot -p'ABCabc-123' -A
    mysql> 
    
    乐在分享!~~
  • 相关阅读:
    为什么 execute(`echo 中文`) 输出中文源码?
    使用图片跨域方式获取图片数据 使用 jsonp 方式跨域获取数据
    js 中的 sleep 方法, 阻塞式
    大数据存储单位介绍(TB、PB、EB、ZB、YB有多大)
    在 chrome 开发工具中使用终端
    作为一个代码搬运工,如何应对突如其来的灵魂拷问『你今天做了什么』?
    JVM相关
    python和C++联合调试
    Google protobuf解析消息逻辑的版本问题
    卷积转换为矩阵运算中填充数的计算-GEMM
  • 原文地址:https://www.cnblogs.com/network-ren/p/12377551.html
Copyright © 2011-2022 走看看