MySQL 依赖 libaio 库。如果未在本地安装此库,则数据目录初始化和后续服务器启动步骤将失败。
MySQL 5.7.19 及更高版本:对非统一内存访问 (NUMA) 的支持已添加到通用 Linux 构建中,该构建现在依赖于 libnuma库。

  1. yum -y install libaio numactl

MySQL二进制包中的包含文件:

目录 目录内容
bin 存放 MySQL 客户端、服务器的可执行文件,比如 mysql、mysqld 等
docs MySQL 手册
man Unix 手册
include 头文件
lib 相关库
share 数据库安装的错误消息、字典和 SQL
support-files 其他支持文件

创建mysql安装目录

  1. mkdir -p /data
  2. tar xvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /data
  3. mv /data/mysql-5.7.38-linux-glibc2.12-x86_64 /data/mysql-5.7.38

创建配置文件
vim /data/mysql-5.7.38/my.cnf

  1. [mysqld]
  2. bind-address=0.0.0.0
  3. port=3306
  4. user=mysql
  5. basedir=/data/mysql-5.7.38
  6. log-error=/data/mysql-5.7.38/mysql.err
  7. datadir=/data/mysql-5.7.38/mysql-data
  8. pid-file=/data/mysql-5.7.38/mysql.pid
  9. socket=/tmp/mysql.sock
  10. #character config
  11. character_set_server=utf8mb4
  12. symbolic-links=0

创建mysql用户和组

  1. groupadd mysql
  2. useradd -r -g mysql -s /bin/false mysql
  3. chown mysql:mysql -R /data/mysql-5.7.38

初始化数据目录

  1. /data/mysql-5.7.38/bin/mysqld --defaults-file=/data/mysql-5.7.38/my.cnf --user=mysql --initialize

PS:初始化执行结束后,MySQL初始密码会记录在/data/mysql-5.7.38/mysql.err中。

启动MySQL

  1. /data/mysql-5.7.38/bin/mysqld_safe --defaults-file=/data/mysql-5.7.38/my.cnf &

登录MySQL并修改密码

  1. #登录
  2. /data/mysql-5.7.38/bin/mysql -u root -p
  3. #修改密码
  4. ALTER USER USER() IDENTIFIED BY 'xxxx';

将mysql命令添加到PATH变量

为了避免在使用MySQL时总是输入客户端程序的绝对路径,可以将/data/mysql-5.7.38/bin目录添加到PATH变量中:
vim /etc/profile

  1. export PATH=$PATH:/data/mysql-5.7.38/bin

配置systemd管理MySQL

vim /usr/lib/systemd/system/mysqld.service

  1. [Unit]
  2. Description=MySQL Server
  3. After=network.service
  4. [Install]
  5. WantedBy=multi-user.target
  6. [Service]
  7. User=mysql
  8. Group=mysql
  9. Type=forking
  10. TimeoutSec=0
  11. PermissionsStartOnly=true
  12. ExecStart=/data/mysql-5.7.38/bin/mysqld --defaults-file=/data/mysql-5.7.38/my.cnf --daemonize
  13. LimitNOFILE=5000
  14. Restart=on-failure
  15. RestartSec=10
  16. RestartPreventExitStatus=1
  17. PrivateTmp=false

配置root用户可以远程访问

  1. 切换mysql数据库
  2. use mysql;
  3. 查看root信息
  4. SELECT `Host`,`User` FROM user where user="root";
  5. 更新用户表:(其中%的意思是允许所有的ip远程访问,如果需要指定具体的某个ip就写上具体的ip即可)
  6. UPDATE user SET `Host` = '%' WHERE `User` = 'root' and host='localhost' LIMIT 1;
  7. 刷新权限:
  8. flush privileges;
  9. 如果仍不可访问,就需要设置访问权限
  10. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;