前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RedHat Linux 6 下 MySQL 8.0.11安装配置

RedHat Linux 6 下 MySQL 8.0.11安装配置

作者头像
星哥玩云
发布2022-08-16 16:01:14
1.7K0
发布2022-08-16 16:01:14
举报
文章被收录于专栏:开源部署开源部署

我这里是RHEL6.5的系统,因此选择RedHat 6 x86,64bit操作系统---下载第一个RPM Bundle即可--MySQL-8.0.11-1.el6.x86_64.rpm-bundle.tar。

目前MySQL8.0.11社区版提供了多种多样的安装方式,但是并未发现针对Linux Generic安装包包含的mysql_secure_installation的安装说明。

MySQL官网地址:https://dev.mysql.com/downloads/mysql/

因此这里使用推荐的RPM安装:

一、mysql-8.0.11-1.el6.x86_64.rpm-bundle.tar解压后有如下7个文件:

-rw-r--r-- 1 root root  28987588 Apr  9 01:06 mysql-community-client-8.0.11-1.el6.x86_64.rpm -rw-r--r-- 1 root root    672184 Apr  9 01:06 mysql-community-common-8.0.11-1.el6.x86_64.rpm -rw-r--r-- 1 root root  4443296 Apr  9 01:06 mysql-community-devel-8.0.11-1.el6.x86_64.rpm -rw-r--r-- 1 root root  2579460 Apr  9 01:06 mysql-community-libs-8.0.11-1.el6.x86_64.rpm -rw-r--r-- 1 root root  1902676 Apr  9 01:06 mysql-community-libs-compat-8.0.11-1.el6.x86_64.rpm -rw-r--r-- 1 root root 395918848 Apr  9 01:07 mysql-community-server-8.0.11-1.el6.x86_64.rpm -rw-r--r-- 1 root root  49092596 Apr  9 01:07 mysql-community-test-8.0.11-1.el6.x86_64.rpm

然后创建mysql用户:

useradd mysql passwd mysql

二、安装顺序为:(建议装之前先把之前的mysql相关包全部卸载,rpm -e --nodeps <包名>即可)

[root@Python ~]# rpm -ivh mysql-community-common-8.0.11-1.el6.x86_64.rpm warning: mysql-community-common-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing...                ########################################### [100%]   1:mysql-community-common ########################################### [100%] [root@python ~]# rpm -ivh mysql-community-libs-8.0.11-1.el6.x86_64.rpm warning: mysql-community-libs-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing...                ########################################### [100%]   1:mysql-community-libs  ########################################### [100%] [root@python ~]# rpm -ivh mysql-community-libs-compat-8.0.11-1.el6.x86_64.rpm warning: mysql-community-libs-compat-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing...                ########################################### [100%]     file /usr/lib64/mysql/libmysqlclient.so.16.0.0 from install of mysql-community-libs-compat-8.0.11-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-8.0.1.el6_8.x86_64     file /usr/lib64/mysql/libmysqlclient_r.so.16.0.0 from install of mysql-community-libs-compat-8.0.11-1.el6.x86_64 conflicts with file from package mysql-libs-5.1.73-8.0.1.el6_8.x86_64 [root@python ~]# rpm -e --nodeps mysql-libs-5.1.73-8.0.1.el6_8.x86_64 [root@python ~]# rpm -ivh mysql-community-libs-compat-8.0.11-1.el6.x86_64.rpm warning: mysql-community-libs-compat-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing...                ########################################### [100%]   1:mysql-community-libs-co########################################### [100%] [root@python ~]# rpm -ivh mysql-community-server-8.0.11-1.el6.x86_64.rpm warning: mysql-community-server-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies:     mysql-community-client(x86-64) >= 8.0.0 is needed by mysql-community-server-8.0.11-1.el6.x86_64 [root@python ~]# rpm -ivh mysql-community-client-8.0.11-1.el6.x86_64.rpm warning: mysql-community-client-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing...                ########################################### [100%]   1:mysql-community-client ########################################### [100%] [root@python ~]# rpm -ivh mysql-community-server-8.0.11-1.el6.x86_64.rpm warning: mysql-community-server-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing...                ########################################### [100%]   1:mysql-community-server ########################################### [100%] [root@python ~]# rpm -ivh mysql-community-devel-8.0.11-1.el6.x86_64.rpm warning: mysql-community-devel-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing...                ########################################### [100%]   1:mysql-community-devel  ########################################### [100%] ^[[A[root@python ~]# rpm -ivh mysql-community-test-8.0.11-1.el6.x86_64.rpm warning: mysql-community-test-8.0.11-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies:     perl(JSON) is needed by mysql-community-test-8.0.11-1.el6.x86_64 --懒的去装perl了,因此测试套件就不装了。

三、安装完毕后相关信息如下:

[root@python ~]# mysql -V mysql  Ver 8.0.11 for Linux on x86_64 (MySQL Community Server - GPL) [root@python ~]# ll /etc/init.d/mysqld -rwxr-xr-x 1 root root 7166 Apr  8 16:21 /etc/init.d/mysqld [root@python ~]# ll /etc/my.cnf --配置文件位置 -rw-r--r-- 1 root root 1188 Apr  8 16:21 /etc/my.cnf

默认的datadir是在/var/lib/mysql/,可以通过修改my.cnf修改,启动命令如下:

[root@python ~]# service mysqld start Initializing MySQL database:                              [  OK  ] Starting mysqld:                                          [  OK  ]

四、发现没密码不能登录,于是添加skip-grant-tables到my.cnf,重启进去重置密码

mysql> alter user root@'localhost' identified by 'mysql'; ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement mysql> exit Bye

居然不能改。。。于是:

mysql> delete from mysql.user where user='root'; Query OK, 1 row affected (0.10 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)

mysql> create user root@'localhost' identified by 'mysql'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

还是不能改,查看密码复杂度要求:

mysql> show variables like '%pass%'; +----------------------------------------------+-----------------+ | Variable_name                                | Value          | +----------------------------------------------+-----------------+ | caching_sha2_password_auto_generate_rsa_keys | ON              | | caching_sha2_password_private_key_path      | private_key.pem | | caching_sha2_password_public_key_path        | public_key.pem  | | default_password_lifetime                    | 0              | | disconnect_on_expired_password              | ON              | | mysql_native_password_proxy_users            | OFF            | | password_history                            | 0              | | password_reuse_interval                      | 0              | | report_password                              |                | | sha256_password_auto_generate_rsa_keys      | ON              | | sha256_password_private_key_path            | private_key.pem | | sha256_password_proxy_users                  | OFF            | | sha256_password_public_key_path              | public_key.pem  | | validate_password.check_user_name            | ON              | | validate_password.dictionary_file            |                | | validate_password.length                    | 8              | | validate_password.mixed_case_count          | 1              | | validate_password.number_count              | 1              | | validate_password.policy                    | MEDIUM          | | validate_password.special_char_count        | 1              | +----------------------------------------------+-----------------+

查看官网https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html#sysvar_validate_password.policy

发现此值有3个,如下所示:

于是设置为0,然后将validate_password.length设置为4,表示最少需要4字符。之所以设置为4是因为这个参数的值不能小于如下公式的计算结果:

validate_password.number_count + validate_password.special_char_count + (2 * validate_password.mixed_case_count)

于是继续创建用户,MySQL8.0取消了直接grant创建用户的语法,只能先create user再grant,因此创建root如下:

mysql> create user root@'localhost' identified by 'mysql'; ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost' mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> create user root@'localhost' identified by 'mysql'; ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'

尼玛...什么玩意儿? 于是去逛了一圈stackoverflow,都说这是一个BUG,于是操作如下:

mysql> drop user root@'localhost';  --是的没错,虽然没有root@'localhost'用户,但你还是要删一遍。 Query OK, 0 rows affected (0.05 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec) mysql> create user root@'localhost' identified by 'mysql'; Query OK, 0 rows affected (0.03 sec) mysql> grant all on *.* to root@'localhost' with grant option; Query OK, 0 rows affected (0.03 sec)

终于改完密码了...去掉参数文件的skip-grant-tables参数,service mysqld restart重启服务。

五、终于设置好密码了,建一个测试用户leo,然后尝试远程连接下吧:

$ mysql -uleo -pmysql -h192.168.1.193 mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

我这5.7的mysql工具都连不上,这就尴尬了,查看认证相关参数:

mysql> show variables like '%auth%'; +-------------------------------+-----------------------+ | Variable_name                | Value                | +-------------------------------+-----------------------+ | default_authentication_plugin | caching_sha2_password | +-------------------------------+-----------------------+ 1 row in set (0.02 sec)

查看官网发现此值的取值如下:

官网还说此值影响create user不显式指定auth plugin时密码的默认加密算法,卧槽...那岂不是说我之前创建的leo用户使用的是默认的caching_sha2_password认证,查看一下:

mysql> select user,host,plugin from mysql.user; +------------------+-----------+-----------------------+ | user            | host      | plugin                | +------------------+-----------+-----------------------+ | leo              | %        | caching_sha2_password | | mysql.infoschema | localhost | mysql_native_password | | mysql.session    | localhost | mysql_native_password | | mysql.sys        | localhost | mysql_native_password | | root            | localhost | caching_sha2_password | +------------------+-----------+-----------------------+

完了,全TM完了......

显然不能直接update plugin,因为这可能导致加密的密码无法被正确解密,你所有的密码都会变异,因此除root@'localhost'外全部删掉重建。

首先需要在my.cnf里添加:default_authentication_plugin=mysql_native_password,然后service mysqld restart重启服务:

mysql> drop user leo; Query OK, 0 rows affected (0.10 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> create user leo identified by 'mysql'; Query OK, 0 rows affected (0.02 sec) mysql> grant all on *.* to leo; Query OK, 0 rows affected (0.08 sec)

$mysql -V mysql  Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using  EditLine wrapper $ mysql -uleo -pmysql -h192.168.1.193 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 16 Server version: 8.0.11 MySQL Community Server - GPL Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

至此远程连接正常。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档