• mysql数据库安装,启动和关闭


    1、环境介绍

        系统:centos6.5

        软件:mysql6.5(从官网下载版本时选择Linux-Generic、X86-64bit)

    2、安装前系统检查

        2.1、SElinux和防火墙是否关闭    

               

        2.2、操作系统的限制

            修改系统的软硬限制,防止服务器的连接过多或表过多而出现打不开表或访问不了表的现象(“too many open files”)和服务器跑多个实例时报(“resource temporarily unavailable”)的错误,表示没有足够资源。编辑/etc/security/limits.conf,   注意:修改完成候重启系统才能生效

               

    3、mysql数据安装过程

        3.1、创建mysql用户,用户组,解压安装包,给安装包授权       

     1 #创建用户及用户组
     2 groupadd mysql
     3 useradd -g mysql mysql -s /sbin/nologin
     4 
     5 #解压安装包至“/usr/local”下
     6 tar -zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /usr/local
     7 
     8 #做软连接,方便日后升级
     9 ln -s /usr/local/mysql-5.6.40-linux-glibc2.12-x86_64 /usr/local/mysql
    10 
    11 #给mysql目录授权
    12 chown mysql.mysql -R /usr/local/mysql

        3.2、创建数据库的数据目录并授权

    1 #创建数据库的数据目录
    2 mkdir -p /data/mysql
    3 
    4 #授权
    5 chown -R mysql.mysql /data/mysql

        3.3、配置数据库配置文件

    vi /etc/my.cnf
    
    [client]
    port = 3306
    socket = /tmp/mysql.sock
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    basedir = /usr/local/mysql
    datadir = /data/mysql
    open_files_limit = 65535
    back_log = 103
    max_connections = 512
    max_connect_errors = 100000
    table_open_cache = 512
    external-locking = FALSE
    max_allowed_packet = 128M
    sort_buffer_size = 2M
    join_buffer_size = 2M
    thread_cache_size = 51
    query_cache_size = 32M
    tmp_table_size = 96M
    max_heap_table_size = 96M
    slow_query_log = 1
    slow_query_log_file = /data/mysql/slow.log
    log-error = /data/mysql/error.log
    long_query_time = 0.5
    server-id = 1323306
    log-bin = /data/mysql/mysql-bin
    sync_binlog = 1
    binlog_cache_size = 4M
    max_binlog_cache_size = 128M
    max_binlog_size = 1024M
    expire_logs_days= 7
    key_buffer_size = 32M
    read_buffer_size = 1M
    read_rnd_buffer_size = 16M
    bulk_insert_buffer_size = 64M
    character-set-server=utf8
    default-storage-engine=InnoDB
    binlog_format=row
    interactive_timeout=300
    wait_timeout=300
    transaction_isolation = REPEATABLE-READ
    innodb_buffer_pool_size = 1434M
    innodb_data_file_path = ibdata1:1024M:autoextend
    innodb_flush_log_at_trx_commit = 1
    innodb_log_buffer_size = 16M
    innodb_log_file_size = 256M
    innodb_log_files_in_group = 2
    innodb_max_dirty_pages_pct = 50
    innodb_file_per_table = 1
    innodb_locks_unsafe_for_binlog = 0
    [mysqldump]
    quick
    max_allowed_packet = 32M
    View Code

        3.4、初始化数据库,一般情况下初始过程中出现两个OK,证明初始化数据库成功。

    1 cd /usr/local/mysql/scripts
    2 ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql --defaults-file=/etc/my.cnf --user=mysql

        3.4、初始化数据库完成后,启动数据库:

    1 cd /usr/local/mysql/bin
    2 ./mysqld_safe --defaults-file=/etc/my.cnf &

           查看mysql进程,验证是否启动成功

           

        3.5、创建数据库密码

    1 #mysql安装完成后,进入数据库的方式是无密码状态,为保证数据库安全,需给数据库root用户创建密码
    2 mysql>use mysql;
    3 mysql>update user set password=password('root123') where user='root';
    4 mysql>flush privileges;
    5 
    6 #安全加固,只保留数据库中用户为root,host为localhost的账号。
    7 mysql>delete from user where user != 'root' or host != 'localhost';
    8 mysql>flush privileges;

    4、关闭mysql数据库:

    1 #正常关闭
    2 shell>cd /usr/local/mysql/bin
    3 shell>./mysqladmin -uroot -proot123 shutdown
    4 
    5 #非正常关闭
    6 shell>ps -ef|grep mysql
    7 #查看mysql数据库的进程ID,直接kill

     至此,mysql数据库安装,启动和关闭完成

    5、额外学习

     1 #进入mysql数据库,通过show databases来查看当前数据库有哪些
     2 mysql> show databases;
     3 +--------------------+
     4 | Database           |
     5 +--------------------+
     6 | information_schema |
     7 | mysql              |
     8 | performance_schema |
     9 | test               |
    10 +--------------------+
    11 4 rows in set (0.02 sec)
    12 
    13 #我们主要了解一下information_schema和mysql库
    14 
    15 #information_schema在安装mysql过程中的初始化阶段自动生成,它提供了访问数据库中元数据的所有信息,里面存放着关于mysql服务器所有其它数据库的信    息,如:数据库名、数据库里面的表、表数据类型和访问权限等,但该库是只读库,只能进行select操作,我们在information_schema中使用较多的表有:
    16      *   tables (记录所有表的基本信息,访问该表可收集表的统计信息)
    17      *   PROCESSLIST  (查看当前数据库的连接)
    18      *   GLOBAL_STATUS  (查看数据库运行的各种状态)
    19      *   GLOBAL_VARIABLES  (查看数据库中的参数)
    20      *   PARTITIONS  (数据库中表分区的情况)
    21      *   INNODB_LOCKS、INNODB_TRX、INNODB_LOCK_WAITS 这三张表用来监控数据库中的锁情况
    22 
    23 #mysql库也是初始化过程中自动创建的,我们主要使用user表来管理数据库中的用户权限信息

     6、补充:mysql5.7安装与5.6的差异

        6.1、mysql5.7安装与之前版本唯一的差异是初始化数据库哪一步,详细介绍如下:

      1 #添加组
      2 groupadd mysql
      3 #添加用户
      4 useradd -g mysql mysql -s /sbin/nologin
      5 #解压安装包
      6 tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /usr/local
      7 #创建软连接
      8 ln -s mysql-5.7.22-linux-glibc2.12-x86_64 mysql
      9 #创建数据库目录
     10 mkdir -p /data/mysql
     11 #创建my.cnf
     12 
     13 vi /etc/my.cnf
     14 
     15 [client]
     16 port = 3306
     17 socket = /tmp/mysql.sock
     18 [mysql]
     19 prompt="u@db R:m:s [d]> "
     20 no-auto-rehash
     21 [mysqld]
     22 user = mysql
     23 port = 3306
     24 basedir = /usr/local/mysql
     25 datadir = /data/mysql
     26 socket = /tmp/mysql.sock
     27 character-set-server = utf8mb4
     28 skip_name_resolve = 1
     29 open_files_limit = 65535
     30 back_log = 1024
     31 max_connections = 512
     32 max_connect_errors = 1000000
     33 table_open_cache = 1024
     34 table_definition_cache = 1024
     35 table_open_cache_instances = 64
     36 thread_stack = 512k
     37 external-locking = FALSE
     38 max_allowed_packet = 32M
     39 sort_buffer_size = 4M     #用于sql语句在内存中的临时排序
     40 join_buffer_size = 4M     #表连接使用,用于BKA。
     41 thread_cache_size = 768
     42 query_cache_size = 0      #query_cache 高速查询缓存,在生产环境中建议关闭,‘0’为缓存数据大小为0,
     43 query_cache_type = 0      #同上,和query_cache_size都是数据缓存的两个核心参数,都要关闭。‘0’为关闭,‘1’为开启(5.6以前的版本默认是关闭的)
     44 interactive_timeout = 600
     45 wait_timeout = 600
     46 tmp_table_size = 32M      #sql语句在排序或分组是没有用到索引,就会使用临时表空间
     47 max_heap_table_size = 32M #管理heap,memory存储引擎表 (建议将tmp_table_size和该参数设置成一样的值,如果不一样,按照最小的值来限制)
     48 slow_query_log = 1
     49 slow_query_log_file = /data/mysql/slow.log
     50 log-error = /data/mysql/error.log
     51 long_query_time = 0.5
     52 server-id = 3306128
     53 log-bin = /data/mysql/mysql-binlog
     54 sync_binlog = 1
     55 binlog_cache_size = 4M
     56 max_binlog_cache_size = 1G
     57 max_binlog_size = 1G
     58 expire_logs_days = 7
     59 master_info_repository = TABLE
     60 relay_log_info_repository = TABLE
     61 gtid_mode = on
     62 enforce_gtid_consistency = 1
     63 log_slave_updates
     64 binlog_format = row
     65 relay_log_recovery = 1
     66 relay_log_purge = 1
     67 key_buffer_size = 32M   #用于MyISAM存储引擎表,缓存MyISAM存储
     68 read_buffer_size = 8M   #表顺序扫描的缓存,只能应用于MyISAM表存储引擎
     69 read_rnd_buffer_size = 4M    #mysql随机读缓存区大小,用于做mrr
     70 bulk_insert_buffer_size = 64M
     71 
     72 lock_wait_timeout = 3600
     73 explicit_defaults_for_timestamp = 1
     74 innodb_thread_concurrency = 0
     75 innodb_sync_spin_loops = 100
     76 innodb_spin_wait_delay = 30
     77 transaction_isolation = REPEATABLE-READ
     78 innodb_buffer_pool_size = 1024M    #innodb_buffer_pool用来缓存Innodb表的数据、索引、插入缓存、数据字典等信息
     79 innodb_buffer_pool_instances = 8
     80 innodb_buffer_pool_load_at_startup = 1
     81 innodb_buffer_pool_dump_at_shutdown = 1
     82 innodb_data_file_path = ibdata1:1G:autoextend   #系统表空间参数
     83 innodb_flush_log_at_trx_commit = 1
     84 innodb_log_buffer_size = 32M       #innodb_log_buffer用于事务在内存中的缓存,即:redo log buffer的大小
     85 innodb_log_file_size = 2G
     86 innodb_log_files_in_group = 2
     87 innodb_io_capacity = 2000
     88 innodb_io_capacity_max = 4000
     89 innodb_flush_neighbors = 0
     90 innodb_write_io_threads = 8
     91 innodb_read_io_threads = 8
     92 innodb_purge_threads = 4
     93 innodb_page_cleaners = 4
     94 innodb_open_files = 65535
     95 innodb_max_dirty_pages_pct = 50
     96 innodb_flush_method = O_DIRECT
     97 innodb_lru_scan_depth = 4000
     98 innodb_checksum_algorithm = crc32
     99 innodb_lock_wait_timeout = 10
    100 innodb_rollback_on_timeout = 1
    101 innodb_print_all_deadlocks = 1
    102 innodb_file_per_table = 1         #独立表空间  该参数设置为‘1’即可
    103 innodb_online_alter_log_max_size = 4G
    104 internal_tmp_disk_storage_engine = InnoDB
    105 innodb_stats_on_metadata = 0
    106 innodb_status_file = 1
    107 innodb_status_output = 0
    108 innodb_status_output_locks = 0
    109 #performance_schema
    110 performance_schema = 1
    111 performance_schema_instrument = '%=on'
    112 #innodb monitor
    113 innodb_monitor_enable="module_innodb"
    114 innodb_monitor_enable="module_server"
    115 innodb_monitor_enable="module_dml"
    116 innodb_monitor_enable="module_ddl"
    117 innodb_monitor_enable="module_trx"
    118 innodb_monitor_enable="module_os"
    119 innodb_monitor_enable="module_purge"
    120 innodb_monitor_enable="module_log"
    121 innodb_monitor_enable="module_lock"
    122 innodb_monitor_enable="module_buffer"
    123 innodb_monitor_enable="module_index"
    124 innodb_monitor_enable="module_ibuf_system"
    125 innodb_monitor_enable="module_buffer_page"
    126 innodb_monitor_enable="module_adaptive_hash"
    127 [mysqldump]
    128 quick
    129 max_allowed_packet = 32M
    130 
    131 #初始化数据库
    132 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql --initialize        #初始化数据库时加上--initialize参数会生成一个临时的数据库初始化密码,记录在log-error(错误日志)中,如果加上--initialize-insecure参数,表示无密码进入,建议使用生成初始密码
    133 
    134 #启动数据库
    135 /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

    136 #修改目录属主
    137 chown -R mysql.mysql /usr/local/mysql
    138 chown -R mysql.mysql /data/mysql

        6.2、启动完成后,修改初始密码,设置永不过期 

                 

    #使用初始密码登录到数据库中
    /usr/local/mysql/bin/mysql -uroot -pqpg47Wtts1#K
    
    #设置密码
    mysql>set password = 'password';
    mysql>alter user 'root'@'localhost' password expire never;
    mysql>flush privileges;
  • 相关阅读:
    linux-满足多字符条件统计行数
    oracle的面试问题
    在开发过程中为什么需要写存储过程
    面向对象编程
    动态SQL
    触发器

    子程序
    游标
    集合
  • 原文地址:https://www.cnblogs.com/brightbrother/p/9185089.html
Copyright © 2020-2023  润新知