一、下载mysql

官网地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
注意事项:

  1. 下载的安装包必须是.rpm-bundle.tar结尾的
  2. 安装的时候,对应自己的下载版本号,不要直接复制命令

当前安装以版本 5.7.36为例

  1. [zcjk@wms-gy-app1 ~]# wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar

二、解压安装包(mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar)

  1. [zcjk@wms-gy-app1 ~]# mkdir mysql-5.7
  2. [zcjk@wms-gy-app1 ~]# mv mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar mysql-5.7
  3. [zcjk@wms-gy-app1 ~]# cd mysql-5.7
  4. [zcjk@wms-gy-app1 mysql-5.7]# tar xvf mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar

三、卸载掉centos7自带的mariadb-lib(阿里云的服务器不带,没有此操作)

  1. 查询mariadb信息

    1. [zcjk@wms-gy-app1 ~]# rpm -qa|grep mariadb
    2. mariadb-libs-5.5.60-1.el7_5.x86_64
  2. 使用rpe -e命令卸载

    1. [zcjk@wms-gy-app1 ~]# sudo rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

    若卸载不成功,另寻他法

四、安装mysql服务

只需要安装如下4个软件包即可,使用rpm -ivh进行安装(按顺序安装,后面的服务依赖前面的服务)

  1. [zcjk@wms-gy-app1 mysql-5.7]# sudo rpm -ivh mysql-community-common-5.7.36-1.el7.x86_64.rpm
  2. 警告:mysql-community-common-5.7.36-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  3. 准备中... ################################# [100%]
  4. 正在升级/安装...
  5. 1:mysql-community-common-5.7.36-1.e################################# [100%]
  6. [zcjk@wms-gy-app1 mysql-5.7]# sudo rpm -ivh mysql-community-libs-5.7.36-1.el7.x86_64.rpm
  7. 警告:mysql-community-libs-5.7.36-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  8. 准备中... ################################# [100%]
  9. 正在升级/安装...
  10. 1:mysql-community-libs-5.7.36-1.e################################# [100%]
  11. [zcjk@wms-gy-app1 mysql-5.7]# sudo rpm -ivh mysql-community-client-5.7.36-1.el7.x86_64.rpm
  12. 警告:mysql-community-client-5.7.36-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  13. 准备中... ################################# [100%]
  14. 正在升级/安装...
  15. 1:mysql-community-client-5.7.36-1.e################################# [100%]
  16. [zcjk@wms-gy-app1 mysql-5.7]# sudo rpm -ivh mysql-community-server-5.7.36-1.el7.x86_64.rpm
  17. 警告:mysql-community-server-5.7.36-1.el7.x86_64.rpm: V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  18. 准备中... ################################# [100%]
  19. 正在升级/安装...
  20. 1:mysql-community-server-5.7.36-1.e################################# [100%]

安装过程中可能出现的问题

  1. 缺少libaio ```shell [zcjk@wms-gy-app1 mysql-5.7]# sudo rpm -ivh mysql-community-server-5.7.36-1.el7.x86_64.rpm 警告:mysql-community-server-5.7.36-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY 错误:依赖检测失败: libaio.so.1()(64bit) 被 mysql-community-server-5.7.36-1.el7.x86_64 需要 libaio.so.1(LIBAIO_0.1)(64bit) 被 mysql-community-server-5.7.36-1.el7.x86_64 需要 libaio.so.1(LIBAIO_0.4)(64bit) 被 mysql-community-server-5.7.36-1.el7.x86_64 需要 net-tools 被 mysql-community-server-5.7.17-1.el7.x86_64 需要 解决办法: [zcjk@wms-gy-app1 mysql-5.7]# sudo yum install libaio
  1. 2. 缺少net-tools
  2. ```shell
  3. [zcjk@wms-gy-app1 mysql-5.7]# sudo rpm -ivh mysql-community-server-5.7.17-1.el7.x86_64.rpm
  4. 警告:mysql-community-server-5.7.17-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
  5. 错误:依赖检测失败:
  6. net-tools 被 mysql-community-server-5.7.17-1.el7.x86_64 需要
  7. 解决办法:
  8. [zcjk@wms-gy-app1 mysql-5.7]# sudo yum install net-tools
  1. 缺少numactl ```shell [zcjk@wms-gy-app1 mysql-5.7]# sudo rpm -ivh mysql-community-server-5.7.36-1.el7.x86_64.rpm

报错:warning: mysql-community-server-5.7.9-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies: libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.9-1.el6.x86_64 libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.9-1.el6.x86_64 libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.9-1.el6.x86_64

解决办法: [zcjk@wms-gy-app1 mysql-5.7]# sudo yum install numactl

  1. <a name="p2PId"></a>
  2. ### 五、初始化数据库
  3. ```shell
  4. [zcjk@wms-gy-app1 mysql-5.7]# sudo mysqld --initialize
  5. #初始化后会在/var/log/mysqld.log生成随机密码

六、修改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库

  1. [zcjk@wms-gy-app1 mysql-5.7]# sudo chown mysql:mysql /var/lib/mysql -R
  2. [zcjk@wms-gy-app1 mysql-5.7]# sudo systemctl start mysqld.service
  3. [zcjk@wms-gy-app1 mysql-5.7]# sudo systemctl status mysqld.service
  4. mysqld.service - MySQL Server
  5. Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: enabled)
  6. Active: active (running) since Tue 2022-04-26 14:07:53 CST; 37min ago
  7. Docs: man:mysqld(8)
  8. http://dev.mysql.com/doc/refman/en/using-systemd.html
  9. Main PID: 3457 (mysqld)
  10. Tasks: 38 (limit: 47654)
  11. Memory: 189.2M
  12. CGroup: /system.slice/mysqld.service
  13. └─3457 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

七、登录mysql,并修改root用户的密码(系统强制要求,否则不能操作mysql)

初始登录密码可在/var/log/mysqld.log文件中找到

  1. [zcjk@wms-gy-app1 mysql-5.7]# mysql -uroot -p'-4iq<tyjVpLb'
  2. mysql: [Warning] Using a password on the command line interface can be insecure.
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 2
  5. Server version: 5.7.26
  6. Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
  7. Oracle is a registered trademark of Oracle Corporation and/or its
  8. affiliates. Other names may be trademarks of their respective
  9. owners.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. mysql> set password=password('234DFS32#@!!!');
  12. Query OK, 0 rows affected, 1 warning (0.00 sec)
  13. mysql> flush privileges;
  14. Query OK, 0 rows affected (0.01 sec)
  15. mysql> show databases;
  16. +--------------------+
  17. | Database |
  18. +--------------------+
  19. | information_schema |
  20. | mysql |
  21. | performance_schema |
  22. | sys |
  23. +--------------------+
  24. 4 rows in set (0.00 sec)

八、创建Database和wms操作用户

  1. 创建数据库 pro_wms_XXXX;

    1. mysql> create database pro_wms_xxx;
  2. 创建操作用户,并给用户赋权限; ```sql mysql> create user ‘pro_wms_xxxx_app’@’localhost’ identified by ‘pro_wms_xxxx_appCS*$‘;

mysql> select host,user from user; —查看当前系统里用户 +—————-+—————————+ | host | user | +—————-+—————————+ | localhost | mysql.session | | localhost | mysql.sys | | localhost | pro_wms_xxxx_app | | localhost | root | +—————-+—————————+ 5 rows in set (0.00 sec)

mysql> grant create, alter, drop, references, index, select, insert, update, delete on pro_wms_xxxx.* to pro_wms_xxxx_app@’localhost’;

mysql> flush privileges;

mysql> show grants for pro_wms_xxxx_app@’localhost’; +——————————————————————————————————————————————————————————————————+ | Grants for pro_wms_xxxx_app@localhost | +——————————————————————————————————————————————————————————————————+ | GRANT USAGE ON . TO ‘pro_wms_xxxx_app’@’localhost’ | | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER ON pro_wms_xxxx.* TO ‘pro_wms_xxxx_app’@’localhost’ | +——————————————————————————————————————————————————————————————————+ 2 rows in set (0.00 sec)

  1. <a name="iVEid"></a>
  2. ### 九、注意无法使用的问题
  3. <a name="yzhvY"></a>
  4. #### (1) init_connect设置问题导致 非root用户赋权后无法查看databases;
  5. 通过mysql的管理员账户进行设置
  6. ```sql
  7. mysql> set session sql_safe_updates=0;
  8. Query OK, 0 rows affected (0.00 sec)
  9. mysql> set global init_connect='set session sql_safe_updates=0';
  10. Query OK, 0 rows affected (0.00 sec)
  11. mysql> show variables like 'init_connect';
  12. +---------------+--------------------------------+
  13. | Variable_name | Value |
  14. +---------------+--------------------------------+
  15. | init_connect | set session sql_safe_updates=0 |
  16. +---------------+--------------------------------+
  17. 1 row in set (0.00 sec)
  18. mysql> show variables like 'sql_safe_updates';
  19. +------------------+-------+
  20. | Variable_name | Value |
  21. +------------------+-------+
  22. | sql_safe_updates | OFF |
  23. +------------------+-------+
  24. 1 row in set (0.01 sec)

也可以通过修改 my.cnf文件设置一些参数,保存后需要重启mysql服务

  1. [zcjk@wms-gy-app1 mysql-5.7]# sudo vim /etc/my.cnf
  2. ...
  3. [mysqld]
  4. #字符集设置
  5. character-set-server=utf8
  6. #大小写不敏感
  7. lower_case_table_names=1
  8. init_connect='set session sql_safe_updates=0'
  9. ...
  10. [clinet]

(2) 注意 SSL的证书验证权限,需要关闭验证SSL证书,否则无法登陆数据库

方法:

  • 用“SHOW VARIABLES LIKE’%ssl%’;”查看ssl状态;

    1. mysql> SHOW VARIABLES LIKE'%ssl%';
    2. +---------------+-----------------+
    3. | Variable_name | Value |
    4. +---------------+-----------------+
    5. | have_openssl | YES |
    6. | have_ssl | YES |
    7. | ssl_ca | ca.pem |
    8. | ssl_capath | |
    9. | ssl_cert | server-cert.pem |
    10. | ssl_cipher | |
    11. | ssl_crl | |
    12. | ssl_crlpath | |
    13. | ssl_key | server-key.pem |
    14. +---------------+-----------------+
    15. 9 rows in set (0.00 sec)
  • 修改“my.cnf”文件,在“[mysqld]”中添加“skip_ssl”。切记不要放到别的标签下如“[clinet]” 否则无法关闭验证; ```shell [zcjk@wms-gy-app1 mysql-5.7]# sudo vim /etc/my.cnf

… [mysqld] skip_ssl

字符集设置

character-set-server=utf8

大小写不敏感

lower_case_table_names=1 init_connect=’set session sql_safe_updates=0’ … [clinet]

  1. - 用“service mysqld restart”重启mysql即可。
  2. ```shell
  3. [zcjk@wms-gy-app1 mysql-5.7]# sudo service mysqld restart
  4. [sudo] zcjk 的密码:
  5. Redirecting to /bin/systemctl restart mysqld.service
  6. [zcjk@wms-gy-app1 mysql-5.7]#
  1. mysql> SHOW VARIABLES LIKE'%ssl%';
  2. +---------------+----------+
  3. | Variable_name | Value |
  4. +---------------+----------+
  5. | have_openssl | DISABLED |
  6. | have_ssl | DISABLED |
  7. | ssl_ca | |
  8. | ssl_capath | |
  9. | ssl_cert | |
  10. | ssl_cipher | |
  11. | ssl_crl | |
  12. | ssl_crlpath | |
  13. | ssl_key | |
  14. +---------------+----------+
  15. 9 rows in set (0.00 sec)

(3) mysql5.7以上默认开启了only_full_group_by 模式

image.png

解决办法:
1、查看sql_mode

  1. mysql> SELECT @@sql_mode;

image.png
2、重新设置值,去掉ONLY_FULL_GROUP_BY

  1. mysql> SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据库下执行以下语句

  1. mysql> SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

4、或是直接修改“my.cnf”文件,在“[mysqld]”中添加 sql_mode 配置,以免重启后失效

  1. ...
  2. [mysqld]
  3. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  4. ...