前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos7 安装 mysql 详解

centos7 安装 mysql 详解

作者头像
IT小马哥
发布2020-03-18 15:02:14
1.1K0
发布2020-03-18 15:02:14
举报
文章被收录于专栏:Java TaleJava Tale

查看linux系统版本

代码语言:javascript
复制
[root@maruifu ~]# cat /etc/redhat-release   查看操作系统版本
CentOS Linux release 7.6.1810 (Core) 
[root@maruifu ~]# uname -r      查看系统内核版本
3.10.0-957.21.3.el7.x86_64 

下载

下载地址 : https://dev.mysql.com/downloads/mysql/

centos7 选择 Red Hat Enterprise Linux / Oracle Linux

版本就自己根据自己系统下载就好了

可以选择 RPM Bundle 使用wget 下载 mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

代码语言:javascript
复制
[root@nfs_client ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

也可以细化下载,下载须要的mysql组件,有4个:分别是 server、client、common、libs

卸载旧版本的MySql (没有的话,则跳过此步骤)

1、查看旧版本MySql rpm -qa | grep mysql 将会列出旧版本MySql的组件列表,如:

代码语言:javascript
复制
[root@maruifu ~]#  rpm -qa | grep mysql
mysql-community-libs-5.7.28-1.el7.x86_64
mysql-community-server-5.7.28-1.el7.x86_64
mysql-community-common-5.7.28-1.el7.x86_64
mysql-community-client-5.7.28-1.el7.x86_64

 2、逐个删除掉旧的组件       使用命令rpm -e --nodeps {-file-name}进行移除操作,移除的时候可能会有依赖,要注意一定的顺序。

代码语言:javascript
复制
rpm -e --nodeps mysql-community-libs-5.7.28-1.el7.x86_64

安装

解压

[root@maruifu tools]# pwd /usr/local/tools [root@maruifu tools]# tar xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

卸载

centos7自带的mariadb-lib

  1. [root@maruifu tools]# rpm -qa|grep mariadb
  2. mariadb-libs-5.5.56-2.el7.x86_64
  3. [root@maruifu tools]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

安装

这里我们只安装mysql-server服务,只需要安装如下4个软件包即可,

使用命令rpm -ivh {-file-name}进行安装操作。

**注:ivh中, i-install安装;v-verbose进度条;h-hash哈希校验**

按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server

代码语言:javascript
复制
1.  rpm -ivh  mysql-community-common-5.7.28-1.el7.x86_64.rpm
2.  rpm -ivh  mysql-community-libs-5.7.28-1.el7.x86_64.rpm
3.  rpm -ivh  mysql-community-client-5.7.28-1.el7.x86_64.rpm
4.  rpm -ivh  mysql-community-server-5.7.28-1.el7.x86_64.rpm
特殊情况1

在阿里云ECS云服务器上安装mysql5.7,当安装 mysql-community-server-5.7.28-1.el7.x86_64.rpm 时报错,报错如下

代码语言:javascript
复制
[root@maruifu ~]# rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.28-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
        libaio.so.1()(64bit) is needed by mysql-community-server-5.7.28-1.el7.x86_64
        libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.28-1.el7.x86_64
        libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.28-1.el7.x86_64

解决法案就是:安装libaio

代码语言:javascript
复制
[root@maruifu ~]# yum -y install libaio

安装libaio后,再重新安装一次mysql-community-server-5.7.28-1.el7.x86_64.rpm,此时就能正常安装了

特殊情况2

比如解决了“特殊情况1”,但在启动mysql的时候,启动不起来,或启动后,去查找临时密码,使用命令没反应。查看日志mysqld.log(可在/etc/my.cnf中查找到mysqld.log的配置位置),报如下错误,此时怎么解决?

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

1>先通过rpm -e --nodeps xxx  卸载掉server,卸载后删除datadir目录,

2>卸载后查看 /etc/my.cnf 中,datadir的配置情况,将datedir目录删除,

3>最后通过命令rpm -ivh xxx 重新安装server,此时就能正常使用mysql了

命令代码如下:

代码语言:javascript
复制
[root@maruifu ~]# rpm -e --nodeps mysql-community-server-5.7.22-1.el7.x86_64

[root@maruifu ~]# cat /etc/my.cnf

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock


[root@maruifu ~]# cd /var/lib
[root@maruifu lib]# rm -rf mysql
[root@maruifu ~]# rpm -ivh mysql-community-server-5.7.22-1.el7.x86_64.rpm
[root@maruifu ~]# systemctl start mysqld.service
[root@maruifu ~]# ps -ef|grep mysql
mysql    21001     1  0 Nov22 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root     22218 20782  0 00:21 pts/1    00:00:00 grep --color=auto mysql
root     24317 31119  0 Nov21 pts/0    00:00:00 mysql -u root -p

登录并创建MySql密码

启动MySql

安装完后,使用命令 service mysqld start 或 systemctl start mysqld.service 启动MySQL服务。(如果mysql服务无法启动,就重启一下系统)

代码语言:javascript
复制
systemctl start mysqld.service    启动mysql
systemctl status mysqld.service  查看mysql状态
systemctl stop mysqld.service   关闭mysql

查看mysql进程 ps -ef|grep mysql
查看3306端口 netstat -anop|grep 3306

登陆mysql修改root密码

由于MySQL5.7.4之前的版本中默认是没有密码的,登录后直接回车就可以进入数据库,进而进行设置密码等操作。其后版本对密码等安全相关操作进行了一些改变,在安装过程中,会在安装日志中生成一个临时密码。

怎么找到这个临时密码呢?

代码语言:javascript
复制
grep 'temporary password' /var/log/mysqld.log
代码语言:javascript
复制
[root@maruifu ~]# grep 'temporary password' /var/log/mysqld.log
2019-11-21T08:07:27.278434Z 1 [Note] A temporary password is generated for root@localhost: rj3pj;g3XWIh

rj3pj;g3XWIh即为登录密码。使用这个随机密码登录进去,然后修改密码,使用命令:

代码语言:javascript
复制
mysql -uroot -p

执行下面的命令修改MySql root密码

代码语言:javascript
复制
set password for root@localhost=password('12345678'); 

在5.6后,mysql内置密码增强机制,低强度密码会报错:

代码语言:javascript
复制
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

更改策略,设置 validate_password_policy=0;

代码语言:javascript
复制
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

修改密码

代码语言:javascript
复制
1. mysql> set password for root@localhost=password('TianTianIT12345');
2. Query OK, 0 rows affected, 1 warning (0.00 sec)

此时,虽然防火墙我时关着的,但root用户只能用于本机访问,不能用于远程访问,否则会报以下错误。因此,接下来要做的是授予root用户远程访问权限。

查看当前授予过的权限:

代码语言:javascript
复制
use mysql;
select user,host from user; 
代码语言:javascript
复制
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> select user,host from user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)
 
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

授予root用户远程访问权限:

代码语言:javascript
复制
mysql> grant all privileges on *.* to root@'%' identified by 'TianTianIT12345';
Query OK, 0 rows affected, 1 warning (0.05 sec)

刷新权限,使设置生效, OK。

代码语言:javascript
复制
mysql> flush privileges;
Query OK, 0 rows affected (0.36 sec)

本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查看linux系统版本
  • 下载
  • 卸载旧版本的MySql (没有的话,则跳过此步骤)
  • 安装
    • 解压
      • 卸载
        • 安装
          • 特殊情况1
          • 特殊情况2
        • 登录并创建MySql密码
        • 启动MySql
        • 登陆mysql修改root密码
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档