mac 用yum命令安装mysql_在centos7.8下使用 yum 命令安装 MySQL 8.0.21

在centos7.8下安装 mysql 8.0.21

前言

在部署linux数据库的,往往因为客户有指定版本的要求,或者有软件安装的审计的需要制定对应的版本号,

我也遇到客户必须制定的mysql的版本的要求,mysql 版本号为v8.0.21。

mysql安装

环境检查

检查是否安装了mysql

rpm -qa| grep -i mysql

如有,类似

mysql-libs-5.1.52-1.el6\_0.1.x86\_64\

卸载之

如果已经安装了mysql,先关闭mysql服务

killall mysqld

rpm -e --nodeps mysql-libs-5.1.52.x86_64

检查否存在 `mariadb` 数据库,如有,卸载之,卸载同上

rpm -qa | grep mariadb

彻底卸载mysql

如果已经安装了mysql

killall mysqld

使用 `find / -name mysql` 查找出所有的mysql删除对应的文件夹

查找结果如下:

\[root@SZDC04291 soft\]# find / -name mysql

/run/lock/subsys/mysql

/etc/linux/targeted/active/modules/100/mysql

/usr/lib64/mysql

/usr/local/mysql

/home/app/soft/mysql-5.7.25-linux-glibc2.12-x86_64/bin/mysql

/home/app/soft/mysql-5.7.25-linux-glibc2.12-x86_64/include/mysql

/mysql

/mysql/bin/mysql

/mysql/include/mysql

/data/mysqldata/mysql

删除对应的mysql目录

\[root@SZDC04291 soft\]# rm -rf /run/lock/subsys/mysql*

\[root@SZDC04291 soft\]# rm -rf /etc/lib/linux/targeted/active/modules/100/mysql*

\[root@SZDC04291 soft\]# rm -rf /usr/lib64/mysql*

\[root@SZDC04291 soft\]# rm -rf /usr/local/mysql/*

\[root@SZDC04291 soft\]# rm -rf /mysql/*

\[root@SZDC04291 soft\]# rm -rf /mysql/bin/mysql/*

\[root@SZDC04291 soft\]# rm -rf /mysql/include/mysql/*

\[root@SZDC04291 soft\]# rm -rf /data/mysqldata/mysql/*

注意:卸载后/etc/my.cnf不会删除,需要进行手工删除

再次查找机器是否安装mysql

rpm -qa|grep -i mysql

无结果,说明已经卸载彻底,接下来直接安装mysql即可.

检查操作系统

如何查看linux版本是centos还是redhat

使用

cat /etc/redhat-release

则会出现具体系统

Red Hat Enterprise Linux AS release 4 (Nahant Update 8)

Kernel /r on an /m

CentOS release 7.8 (Final)

查看linux系统是64位还是32位

getconf LONG_BIT

64

下载安装

接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址:https://dev.mysql.com/downloads/repo/yum/

先下载 Yum 资源包

37bd4f05d07e683754ddebe95f929092.png

cd /home/soft

切换到 /home/soft 把 mysql80-community-release-el7-3.noarch.rpm 下载在该目录

[root@ebs-72921 soft]# wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

--2020-07-24 10:16:32-- https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

正在解析主机 repo.mysql.com (repo.mysql.com)... 23.36.193.224

正在连接 repo.mysql.com (repo.mysql.com)|23.36.193.224|:443... 已连接。

已发出 HTTP 请求,正在等待回应... 200 OK

长度:26024 (25K) [application/x-redhat-package-manager]

正在保存至: “mysql80-community-release-el7-3.noarch.rpm”

100%[======================================>] 26,024 --.-K/s 用时 0s

2020-07-24 10:16:34 (101 MB/s) - 已保存 “mysql80-community-release-el7-3.noarch.rpm” [26024/26024])

mysql 安装

[root@ebs-72921 soft]# rpm -ivh mysql80-community-release-el7-3.noarch.rpm

警告:mysql80-community-release-el7-3.noarch.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY

准备中... ################################# [100%]

正在升级/安装...

1:mysql80-community-release-el7-3 ################################# [100%]

[root@ebs-72921 soft]# yum install mysql-server

安装过程中会需要提示下载依赖,按 y 确认下载即可:

6a4e0e58d98eb43c1254a58ddadadf7a.png

如下图所示,

1f3247e4085b670f619d074a6213ad5b.png

mysql 安装完成。

初始化MySQL

mysqld --initialize

启动/停止/重启 mysql服务

####  启动mysql

service mysqld start

####  停止mysql

service mysqld stop

####  重启mysql

service mysqld restart

查看运行状态

service mysqld status

####  查看mysql进程

ps -ef | grep mysql

#####  结束mysql进程

kill -9 进程号 或 killall mysqld

安装问题

Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details. 错误

解决方案:

10429c5369081804c12ab80ba172fdeb.png

根据提示,分别使用service mysqld status和journalctl -xe查看服务启动失败的原因,发现是目录权限不足造成的,通过查看mysql目录发现目录下有的文件归属还是root,改成mysql即可。

ll /var/lib/mysql |grep mysql

chown -R mysql:mysql /var/lib/mysql

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO) 错误

需要停止mysql服务,修改密码下面单独介绍,请继续,如果知道怎么处理的童鞋跳过。

初始化mysql密码

添加密码

mysql 安装好了,但是没有设置root密码,如果此时访问mysql会报错,

忘记MySQL密码或者本地lcoalhost,root用户无法登录时。可用以下方法无密码登录

关闭mysqld服务

service mysqld stop   关闭mysqld服务 (可以直接killall mysqld)

进入安全模式

在执行命令之前必须先关闭mysqld服务,请注意!

修改配置文件无密码登录:

vi /etc/my.cnf

在最尾部加上:添加一行 skip-grant-tables

40ab936f7358cd2047237f687e233885.png

保存,启动mysql

service mysqld start

使用 mysql -u root -p 空密码进入shell模式

mysql -u root -p

2dcfcac5ff5a92ec977ce3973f307fc4.png

首先更新root密码为空字符串,

`

mysql> update user set authentication_string='' where user='root';

//刷新权限

mysql> flush privileges;

//退出

mysql> quit;

`

quit; 退出, 然后重启 mysql

然后 vi /etc/my.cnf 删除一行 skip-grant-tables

然后 重启mysql

service mysqld restart

然后再登陆Mysql:

mysql -uroot

使用ALTER修改root用户密码,方法为 ALTER user ‘root’@’localhost’ IDENTIFIED BY ‘新密码’。如下:

mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '你的密码';

//刷新权限

mysql> flush privileges;

//退出

mysql> quit;

再次使用 mysql -uroot -p 登陆 mysql就需要使用密码了,密码就是刚刚修改的密码了。

设置远程访问

允许root用户在任何地方进行远程登录,并具有所有库任何操作权限。

如果出现 提示”Access denied for user ‘root’@’localhost’ (using password: YES)”

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      |

+------------------+-----------+

| epass            | %         |

| epass            | localhost |

| mysql.infoschema | localhost |

| mysql.session    | localhost |

| mysql.sys        | localhost |

| root             | localhost |

+------------------+-----------+

6 rows in set (0.00 sec)

mysql>

发现root只有本地权限,

那么,

我们需要给root 加上 127.0.0.1,% 还有指定服务器ip访问的权限,

// 设置127.0.0.1访问的root权限

mysql> INSERT INTO mysql.user(host,user,authentication_string) VALUES("127.0.0.1","root",PASSWORD("123456"));

// 设置%所有ip访问的root权限,注意这个版本有点奇怪,按照道理设置所有%就可以访问了,但一定要设置 127.0.0.1 和 localhost 也要加权限。具体原因还没有查明

mysql> INSERT INTO mysql.user(host,user,authentication_string) VALUES("%","root",PASSWORD("123456"));

// 我们还可以指定对应的服务器的访问权限

mysql> INSERT INTO mysql.user(host,user,authentication_string) VALUES("10.6.9.96","root",PASSWORD("123456"));

//刷新权限

mysql> flush privileges;

//退出

mysql> quit;

如果出现  `Field 'ssl_cipher' doesn't have a default value`错误怎么解决?

使用 `grant all on root.* to 'root'@'localhost'; ` 和 `grant all on root.* to 'root'@'127.0.0.1'; `命令

此时,使用 `select user,host from user;` 查看是否权限都有了

如果有,重新`mysql`,让设置生效即可访问了。

或者 可以简单一点一些,

使用  `grant all privileges on . to root@"%" identified by "Qa~!@#4^" ; ` //给mysql用户分配远程访问权限

需要使用 `flush privileges;` 刷新权限。

service mysqld restart

测试本地是否可以访问

使用 `mysql -uroot -h127.0.0.1 -p` 登录并授权`localhost`本地`root`登录

也可以使用  `mysql -uroot -p ` 登录一下测试是否可以登录

其他的问题

怎样保护“/tmp/mysql.sock ”不被删除

怎样保护“/tmp/mysql.sock ”不被删除

如果你有这个问题,事实上任何人可以删除MySQL通讯套接字“/tmp/mysql.sock”,在`Unix`的大多数版本上,你能通过为其设置sticky(t)位来保护你的“/tmp”文件系统。作为`root`登录并且做下列事情:

在shell模式下:

shell> chmod +t /tmp

这将保护你的“/tmp”文件系统使得文件仅能由他们的所有者或超级用户(root)删除。

你能执行`ls -ld /tmp` 检查`sticky`位是否被设置,如果最后一位许可位是t,该位被设置了。

mysql -h localhost和mysql -h 127.0.0.1的区别

mysql -h localhost和mysql -h 127.0.0.1的区别,

通过localhost连接到mysql是使用UNIX socket,而通过127.0.0.1连接到mysql是使用TCP/IP。

看看状态:mysql -h localhost

* **mysql -h localhost > status**

Connection id:     639

Current database: mysql

**Current user:   root@localhost**

SSL:           Not in use

Current pager: stdout

Using outfile:        ”

Using delimiter:    ;

Protocol version: 10

**Connection:    Localhost via UNIX socket**

看看状态:mysql -h 127.0.0.1

* **mysql -h 127.0.0.1 > status**

Connection id:     640

Current database: mysql

**Current user:   root@localhost**

SSL:           Not in use

Current pager: stdout

Using outfile:        ”

Using delimiter:    ;

Protocol version: 10

**Connection:   127.0.0.1 via TCP/IP**

# 安装时的一些错误

* -bash: ./scripts/mysql_install_db: 类似错误

出现-bash: ./scripts/mysql\_install\_db: /usr/bin/perl: bad interpreter:没有那个文件或目录

解决办法:

yum -y install perl perl-devel

```

*  出现 **libaio.so.1: cannot open shared object** 类似错误

Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决办法:

> yum -y install libaio-devel

*  ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘

登录时有可能报这样的错:

ERROR 2002 (HY000): Can‘t connect to local MySQL server through >socket ‘/var/lib/mysql/mysql.sock‘ (2),原因           是/var/lib/mysql>的访问权限问题。下面的命令把/var/lib/mysql的拥有者改为当前用户:

sudo chown -R root:root /var/lib/mysql

service mysqld restart

```

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值