指定位置安装

步骤:
1、在根目录下创建文件夹/data/mysql

  1. mkdir /data/package -p

2、上传mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz文件到/data/package下

  1. cd /data/
  2. tar -zxvf /data/package/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz -C /data/
  3. # 或
  4. tar -xvf /data/package/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz -C /data/

3、更改解压缩后的文件夹名称

  1. mv mysql-8.0.19-linux-glibc2.12-x86_64 mysql

4、创建mysql用户组和mysql用户

  1. groupadd mysql
  2. useradd -r -g mysql mysql

5、创建conf、log、tmp文件夹和error.log文件

  1. mkdir /data/mysql/conf /data/mysql/log /data/mysql/tmp -p
  2. vim /data/mysql/log/error.log
  3. # 打开后
  4. :wq 保存退出

6、安装libaio依赖包,系统自带的有这个依赖包所以不需要安装,不过自带的依赖包会报错(可跳过)

  1. 查询是否暗转libaio依赖包
  2. #yum search libaionn
  3. 如果没安装,可以用下面命令安装
  4. #yum install libaio

7、初始化mysql命令

  1. cd /data/mysql/bin
  2. ./mysqld --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data --initialize --console

在执行上面命令时特别要注意一行内容
[Note] A temporary password is generated for root@localhost: o*s#gqh)F4Ck
root@localhost: 后面跟的是mysql数据库登录的临时密码,各人安装生成的临时密码不一样
如果初始化时报错如下:

error while loading shared libraries: libnuma.so.1: cannot open shared objec

是因为libnuma安装的是32位,我们这里需要64位的,执行下面语句就可以解决

  1. yum install numactl.x86_64


执行完后重新初始化mysql命令

8、关联myql用户到mysql用户组中

  1. chown -R mysql:mysql /data/mysql/
  2. chown -R mysql /data/mysql

9、修改Mysql配置文件

  1. vim /data/mysql/bin/mysqld_safe
  2. 可使用命令替换
  3. # :%s/匹配字符/替换字符/
  4. :%s/\/usr\/local\/mysql/\/data\/mysql/
  5. 修改前
  6. if test -z "$basedir"
  7. then
  8. basedir=/usr/local/mysql
  9. bindir=/usr/local/mysql/bin
  10. if test -z "$datadir"
  11. then
  12. datadir=/usr/local/mysql/data
  13. fi
  14. sbindir=/usr/local/mysql/bin
  15. libexecdir=/usr/local/mysql/bin
  16. else
  17. bindir="$basedir/bin"
  18. if test -z "$datadir"
  19. then
  20. datadir="$basedir/data"
  21. fi
  22. sbindir="$basedir/sbin"
  23. libexecdir="$basedir/libexec"
  24. fi
  25. 修改后
  26. if test -z "$basedir"
  27. then
  28. basedir=/data/mysql
  29. bindir=/data/mysql/bin
  30. if test -z "$datadir"
  31. then
  32. datadir=/data/mysql
  33. fi
  34. sbindir=/data/mysql/bin
  35. libexecdir=/data/mysql/bin
  36. else
  37. bindir="$basedir/bin"
  38. if test -z "$datadir"
  39. then
  40. datadir="$basedir/data"
  41. fi
  42. sbindir="$basedir/sbin"
  43. libexecdir="$basedir/libexec"
  44. fi

10、修改my.cnf文件 配置文件存放在%mysql%/conf中(也可随意放置,只需在后续启动服务器时指定配置文件即可)

  1. # 把下方配置修改成自己服务器上的路径即可,使用下方命令
  2. :%s/\/data\/mysql-8.0.18/\/data\/mysql/
  3. [client]
  4. port = 3306
  5. socket = /data/mysql-8.0.18/tmp/mysql.sock
  6. [mysqld]
  7. #mysql数据文件所在位置
  8. datadir = /data/mysql-8.0.18/data
  9. #pid
  10. pid-file = /data/mysql-8.0.18/mysql.pid
  11. #设置socke文件所在目录
  12. socket = /data/mysql-8.0.18/tmp/mysql.sock
  13. #设置临时目录
  14. tmpdir = /data/mysql-8.0.18/tmp
  15. # 日志相关
  16. slow_query_log = ON
  17. log_error = "/data/mysql-8.0.18/log/error.log"
  18. slow_query_log_file = "/data/mysql-8.0.18/log/blg-slow.log"
  19. long_query_time = 2
  20. log_queries_not_using_indexes = 1
  21. log_throttle_queries_not_using_indexes = 10
  22. # expire_logs_days = 90
  23. min_examined_row_limit = 100
  24. log_output = TABLE,FILE
  25. general_log = 1
  26. # binlog设置
  27. master_info_repository = TABLE
  28. relay_log_info_repository = TABLE
  29. log_bin = bin.log
  30. server-id = 1
  31. # innodb 设置
  32. default_storage_engine = InnoDB
  33. innodb_file_per_table = 1
  34. innodb_open_files = 500
  35. innodb_buffer_pool_size = 1024M
  36. innodb_write_io_threads = 10
  37. innodb_read_io_threads = 10
  38. innodb_thread_concurrency = 0
  39. innodb_purge_threads = 1
  40. innodb_flush_log_at_trx_commit = 2
  41. innodb_log_buffer_size = 16M
  42. innodb_log_file_size = 64M
  43. innodb_log_files_in_group = 3
  44. innodb_max_dirty_pages_pct = 90
  45. innodb_lock_wait_timeout = 120
  46. innodb_buffer_pool_load_at_startup = 1
  47. innodb_buffer_pool_dump_at_shutdown = 1
  48. innodb_lru_scan_depth = 2000
  49. innodb_io_capacity = 4000
  50. innodb_io_capacity_max = 8000
  51. # 默认参数设置
  52. secure-file-priv = NULL
  53. # Disabling symbolic-links is recommended to prevent assorted security risks
  54. # symbolic-links =0
  55. character-set-server = utf8mb4
  56. collation-server = utf8mb4_general_ci
  57. default_authentication_plugin = mysql_native_password
  58. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  59. # sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES'
  60. # # Custom config should go here
  61. # !includedir /etc/mysql/conf.d/
  62. #----------------优化配置(说明从上到下)
  63. # 支持符号链接,就是可以通过软连接的方式,管理其他目录的数据库,最好不要开启,当一个磁盘或分区空间不够时,可以开启该参数将数据存储到其他的磁盘或分区
  64. symbolic-links=0
  65. # 设置autocommit=0,则用户将一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务(调试模式时使用)
  66. #autocommit=0
  67. # MySQL读入缓冲区的大小
  68. read_buffer_size = 512M
  69. # MySQL的随机读缓冲区大小、MySQL的顺序读缓冲区大小
  70. read_rnd_buffer_size = 256M
  71. sort_buffer_size = 256M
  72. # 连接超时时间、保持时间、最大传输数据包大小
  73. wait_timeout = 2880000
  74. interactive_timeout = 2880000
  75. max_allowed_packet = 512M
  76. # 连接缓存池大小、临时表大小、临时存放位置
  77. join_buffer_size = 512M
  78. tmp_table_size = 128M
  79. tmpdir = /data/mysql-8.0.18/tmp

11、启动mysql

  1. #具体配置需要修改成服务器上对应的路径
  2. # --defaults-file
  3. # --basedir
  4. # --datadir
  5. /data/mysql/bin/mysqld_safe --defaults-file=/data/mysql/conf/my.cnf --basedir=/data/mysql/ --datadir=/data/mysql/data

12、登录mysql

  1. /data/mysql/bin/mysql --defaults-file=/data/mysql/conf/my.cnf -uroot -p

13、输入临时密码。临时密码就是第7条root@localhost:后面的内容
14、修改mysql的登录密码

  1. alter user 'root'@'localhost' identified with mysql_native_password by '123456';
  2. flush privileges;

my.cnf配置的几个参数:
skip-name-resolve 跳过DNS反向解析过程.(这样就不能使用主机名连接mysql了,只能使用ip连接)
skip-grant-tables 跳过授权表(当mysql登陆密码忘记时的解决办法)
skip-networking 跳过TCP/IP连接
skip-host-cache 禁用主机名缓存;要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令