安装依赖包

  1. yum install libaio -y

下载安装包

  1. wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

解压创建目录

  1. tar zxf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /opt
  2. ln -s /opt/mysql-5.7.30-linux-glibc2.12-x86_64 /opt/mysql
  3. mkdir -p /data/mysql

修改启动脚本并添加开机自启动

  1. sed -i '46s#basedir=#basedir=/opt/mysql#' /opt/mysql/support-files/mysql.server
  2. sed -i '47s#datadir=#datadir=/data/mysql#' /opt/mysql/support-files/mysql.server
  3. cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
  4. chmod 755 /etc/init.d/mysqld
  5. chkconfig mysqld

创建用户

  1. groupadd mysql
  2. useradd -r -g mysql -s /bin/false mysql

赋予data目录和base目录普通用户组

  1. chown -R mysql.mysql /opt/mysql/
  2. chown -R mysql.mysql /data/
  1. ln -s /opt/mysql/bin/mysql /usr/bin/

创建配置文件

  1. vim /etc/my.cnf
  1. [mysqld]
  2. datadir = /data/mysql
  3. basedir = /opt/mysql
  4. #tmpdir = /data/mysql/tmp_mysql
  5. port = 3306
  6. socket = /data/mysql/mysql.sock
  7. pid-file = /data/mysql/mysql.pid
  8. max_connections = 8000
  9. max_connect_errors = 100000
  10. max_user_connections = 3000
  11. check_proxy_users = on
  12. mysql_native_password_proxy_users = on
  13. local_infile = OFF
  14. symbolic-links = FALSE
  15. group_concat_max_len = 4294967295
  16. max_join_size = 18446744073709551615
  17. max_execution_time = 20000
  18. lock_wait_timeout = 60
  19. autocommit = 1
  20. lower_case_table_names = 1
  21. thread_cache_size = 64
  22. disabled_storage_engines = "MyISAM,FEDERATED"
  23. character_set_server = utf8mb4
  24. character-set-client-handshake = FALSE
  25. collation_server = utf8mb4_general_ci
  26. init_connect = 'SET NAMES utf8mb4'
  27. transaction-isolation = "READ-COMMITTED"
  28. skip_name_resolve = ON
  29. explicit_defaults_for_timestamp = ON
  30. log_timestamps = SYSTEM
  31. local_infile = OFF
  32. event_scheduler = OFF
  33. query_cache_type = OFF
  34. query_cache_size = 0
  35. sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
  36. log_error = /data/mysql/mysql.err
  37. slow_query_log = ON
  38. slow_query_log_file = /data/mysql/slow.log
  39. long_query_time = 1
  40. general_log = OFF
  41. general_log_file = /data/mysql/general.log
  42. expire_logs_days = 99
  43. log-bin = /data/mysql/mysql-bin
  44. log-bin-index = /data/mysql/mysql-bin.index
  45. max_binlog_size = 500M
  46. binlog_format = mixed
  47. binlog_rows_query_log_events = ON
  48. binlog_cache_size = 128k
  49. binlog_stmt_cache_size = 128k
  50. log-bin-trust-function-creators = 1
  51. max_binlog_cache_size = 2G
  52. max_binlog_stmt_cache_size = 2G
  53. relay_log = /data/mysql/relay
  54. relay_log_index = /data/mysql/relay.index
  55. max_relay_log_size = 500M
  56. relay_log_purge = ON
  57. relay_log_recovery = ON
  58. server_id = 1
  59. read_buffer_size = 1M
  60. read_rnd_buffer_size = 2M
  61. sort_buffer_size = 64M
  62. join_buffer_size = 64M
  63. tmp_table_size = 64M
  64. max_allowed_packet = 128M
  65. max_heap_table_size = 64M
  66. connect_timeout = 43200
  67. wait_timeout = 43200
  68. back_log = 512
  69. interactive_timeout = 300
  70. net_read_timeout = 30
  71. net_write_timeout = 30
  72. skip_external_locking = ON
  73. key_buffer_size = 16M
  74. bulk_insert_buffer_size = 16M
  75. concurrent_insert = ALWAYS
  76. open_files_limit = 65000
  77. table_open_cache = 16000
  78. table_definition_cache = 16000
  79. default_storage_engine = InnoDB
  80. default_tmp_storage_engine = InnoDB
  81. internal_tmp_disk_storage_engine = InnoDB
  82. [client]
  83. socket = /data/mysql/mysql.sock
  84. default_character_set = utf8mb4
  85. [mysql]
  86. default_character_set = utf8mb4
  87. [ndatad default]
  88. TransactionDeadLockDetectionTimeOut = 20000
chown -R mysql.mysql /etc/my.cnf

初始化

/opt/mysql/bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/data/mysql

过滤初始密码

mysql_passwd=$(grep 'A temporary password is generated' /data/mysql/mysql.err |awk '{print $NF}')

启动服务

service mysqld start

修改初始密码

/opt/mysql/bin/mysqladmin -uroot -p${mysql_passwd} password '123456'

客户端环境变量

echo "export PATH=\$PATH:/opt/mysql/bin" | tee /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh