前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【超详细】MySQL环境安装

【超详细】MySQL环境安装

作者头像
利刃大大
发布2023-10-17 12:35:39
2410
发布2023-10-17 12:35:39
举报
文章被收录于专栏:编程语言/linux/算法

说明

  • 安装与卸载中,用户全部切换成为 root,⼀旦 安装,普通用户能使用的
  • 初期练习,mysql 不进⾏用户管理,全部使⽤ root 进⾏,尽快适应 mysql 语句,后⾯学了用户管理,在考虑新建普通用户
  • mariadbmysql 的一个开源分支,如果安装了 mariadb 的话,那么就不用再安装 mysql 了,不过下面的步骤都是按照 mysql 来的

1、关闭不需要的环境

​ 这里演示的前提是存在 mysql 进程,为了演示如何将其服务关闭的过程!

​ 首先通过进程指令 ps 来检查是否有 mysql 的存在:

代码语言:javascript
复制
[root@VM-8-2-centos liren]# ps ajx | grep mysql
    1  6928  6927  6927 ?           -1 Sl      27   0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
31787 10780 10779 29479 pts/40   10779 R+       0   0:00 grep --color=auto mysql  #这是grep进程
[root@VM-8-2-centos liren]#

​ 可以看到是存在的!所以我们通过 systemctl 指令将其服务关闭:

代码语言:javascript
复制
[root@VM-8-2-centos liren]# systemctl stop mysqld.service    # 停⽌mysql服务
[root@VM-8-2-centos liren]# ps ajx | grep mysql
31787 11274 11273 29479 pts/40   11273 R+       0   0:00 grep --color=auto mysql
[root@VM-8-2-centos liren]# 

​ 这个步骤就是关掉它的进程,因为我们要删除它的环境,肯定先要将它的进程关闭!

2、检查并删除系统安装包

​ 现在我们要检查一下机器中是否有曾经从远端拉取过来的安装包,对于 yum 来说,它下载下来的安装包格式是 .rpm,所以我们用来检查关于安装包的指令也是 rpm

代码语言:javascript
复制
[root@VM-8-2-centos liren]# rpm -qa | grep mysql
[root@VM-8-2-centos liren]#                               # 这种情况说明没有安装包

[root@VM-8-2-centos liren]# rpm -qa | grep mysql          # 这种情况说明存在安装包
mysql-community-common-5.7.41-1.el7.x86_64
mysql-community-server-5.7.41-1.el7.x86_64
mysql57-community-release-el7-11.noarch
mysql-community-client-5.7.41-1.el7.x86_64
mysql-community-libs-5.7.41-1.el7.x86_64
[root@VM-8-2-centos liren]#

​ 如果存在安装包,我们可以一个一个安装包去删除,但是这里我们可以使用 “管道 + xargs” 指令来批量删除安装包,指令如下:

代码语言:javascript
复制
[root@VM-8-2-centos liren]# rpm -qa | grep mysql | xargs yum -y remove          # xargs会将管道中的参数放到remove后面

​ 为了检测是否删除彻底,我们可以通过下面几个指令来检查:

代码语言:javascript
复制
[root@VM-8-2-centos liren]# rpm -qa | grep mysql            # 检查安装包还在不在
[root@VM-8-2-centos liren]#                               

[root@VM-8-2-centos liren]# ps ajx | grep mysql             # 检查是否服务关闭
31787 24039 24038 29479 pts/40   24038 R+       0   0:00 grep --color=auto mysql

[root@VM-8-2-centos liren]# ls /etc/my.cnf                  # 将MySQL启动时加载的配置文件删除
/etc/my.cnf
[root@VM-8-2-centos liren]# rm /etc/my.cnf
rm: remove regular file ‘/etc/my.cnf’? y

[root@VM-8-2-centos liren]# ls /var/lib/mysql/              # 曾经使用过的mysql的缓存数据,如果需要的话可以备份
auto.cnf    ca.pem           client-key.pem  ibdata1      ib_logfile1  performance_schema  public_key.pem   server-key.pem
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  mysql        private_key.pem     server-cert.pem  sys
[root@VM-8-2-centos liren]# 

3、获取 mysql 官方 yum 源

官方yum源网址

注意:最好安装和自己系统⼀致的 mysql 版本,否则可能会存在软件兼容性问题,下面指令查看自己的系统版本

代码语言:javascript
复制
[root@VM-8-2-centos liren]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)        # 说明是7.9版本,我们就去找7.9版本的

​ 在官方网站里面其实下载名称不是很明显:

​ 所以我们可以在空白处右击,查看网页源代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0Rni739-1688361719027)(../img/image-20230605182102291.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v0Rni739-1688361719027)(../img/image-20230605182102291.png)]

​ 点击图中红色方框中的链接,下载下来,然后通过云服务器中的 rz 指令从我们本地拉取到云服务器中:

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# rz
[root@VM-8-2-centos MySQL]# ll
total 12
-rw-r--r-- 1 root root 9224 Jun  5 18:22 mysql57-community-release-el7-9.noarch.rpm

​ 这样子我们就获得了 mysql 的安装包了!

4、安装 mysql yum 源,对比前后 yum 源

​ 我们的 yum 源安装之后是放到 /etc/yum.repos.d/ 的路径之下的,所以可以通过观察这个文件夹来看看安装前后的对比!

​ 另外安装 yum 源我们之前说过了,要使用 rpm 指令,因为 yum 源下载的安装包格式是 .rpm 的,再配合 rpm 的选项就能安装了:

代码语言:javascript
复制
# 安装前
[root@VM-8-2-centos MySQL]# ll /etc/yum.repos.d/
total 52
-rw-r--r-- 1 root root  614 Jun 21  2022 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23  2020 CentOS-CR.repo
-rw-r--r-- 1 root root  649 Nov 23  2020 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root  230 Jun 21  2022 CentOS-Epel.repo
-rw-r--r-- 1 root root  314 Nov 23  2020 CentOS-fasttrack.repo
-rw-r--r-- 1 root root  630 Nov 23  2020 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23  2020 CentOS-Sources.repo
-rw-r--r-- 1 root root 8515 Nov 23  2020 CentOS-Vault.repo
-rw-r--r-- 1 root root  616 Nov 23  2020 CentOS-x86_64-kernel.repo
-rw-r--r-- 1 root root 1358 Sep  5  2021 epel.repo
-rw-r--r-- 1 root root 1457 Sep  5  2021 epel-testing.repo

# 进行安装
[root@VM-8-2-centos MySQL]# rpm -hvi mysql57-community-release-el7-9.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql57-community-release-el7-9  ################################# [100%]
   
# 安装后
[root@VM-8-2-centos MySQL]# ll /etc/yum.repos.d/
total 60
-rw-r--r-- 1 root root  614 Jun 21  2022 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23  2020 CentOS-CR.repo
-rw-r--r-- 1 root root  649 Nov 23  2020 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root  230 Jun 21  2022 CentOS-Epel.repo
-rw-r--r-- 1 root root  314 Nov 23  2020 CentOS-fasttrack.repo
-rw-r--r-- 1 root root  630 Nov 23  2020 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23  2020 CentOS-Sources.repo
-rw-r--r-- 1 root root 8515 Nov 23  2020 CentOS-Vault.repo
-rw-r--r-- 1 root root  616 Nov 23  2020 CentOS-x86_64-kernel.repo
-rw-r--r-- 1 root root 1358 Sep  5  2021 epel.repo
-rw-r--r-- 1 root root 1457 Sep  5  2021 epel-testing.repo
-rw-r--r-- 1 root root 1416 Sep 12  2016 mysql-community.repo  # 多了两个mysql文件
-rw-r--r-- 1 root root 1440 Sep 12  2016 mysql-community-source.repo

5、看看 yum 源是否安装成功

​ 这里使用 yum list | grep mysql 进行查看是否 yum 源存在:

代码语言:javascript
复制
[liren@VM-8-2-centos MySQL]$ yum list | grep mysql
Repository epel is listed more than once in the configuration
mysql57-community-release.noarch         el7-9                         installed
akonadi-mysql.x86_64                     1.9.2-4.el7                   os       
anope-mysql.x86_64                       2.0.12-1.el7                  epel     
apr-util-mysql.x86_64                    1.5.2-6.el7_9.1               updates  
calligra-kexi-driver-mysql.x86_64        2.9.10-2.el7                  epel     
collectd-mysql.x86_64                    5.8.1-1.el7                   epel     
dmlite-plugins-mysql.x86_64              1.15.2-12.el7                 epel     
dovecot-mysql.x86_64                     1:2.2.36-8.el7                os       
dpm-copy-server-mysql.x86_64             1.13.0-1.el7                  epel     
…………
…………
[liren@VM-8-2-centos MySQL]$ 

​ 可以看到它列举出来了,说明安装成功,这个时候我们把我们的安装包删掉,也可以不删,看个人选择!

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# rm mysql57-community-release-el7-9.noarch.rpm 
rm: remove regular file ‘mysql57-community-release-el7-9.noarch.rpm’? y
[root@VM-8-2-centos MySQL]# 

6、安装 mysql 服务

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# yum install -y mysql-community-server
[sudo] password for liren:
Loaded plugins: aliases, auto-update-debuginfo, fastestmirror, protectbase
Repository epel is listed more than once in the configuration
……
Installing : mysql-community-common-5.7.33-1.el7.x86_64 #公共模块
Installing : mysql-community-libs-5.7.33-1.el7.x86_64   #库
Installing : mysql-community-client-5.7.33-1.el7.x86_64 #客⼾端
Installing : mysql-community-server-5.7.33-1.el7.x86_64 #服务器
……
Complete!

​ 如果安装服务的时候报错了,那么可以看看下面的常见问题,不行再去网上找方法解决!

7、查看配置文件和数据存储位置

​ 安装结束之后,我们通过下面几步查看是否配置文件等都存在:

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# ls /etc/my.cnf      # mysql的启动配置文件
/etc/my.cnf

[root@VM-8-2-centos MySQL]# which mysqld        # mysql的服务端
/usr/sbin/mysqld

[root@VM-8-2-centos MySQL]# which mysql         # mysql的客户端
/usr/bin/mysql

8、启动服务

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# ps ajx | grep mysql            # 启动前
11917 23062 23061  9601 pts/41   23061 R+       0   0:00 grep --color=auto mysql

[root@VM-8-2-centos MySQL]# systemctl start mysqld         # 启动mysql服务端的指令,也可以是mysqld.service

[root@VM-8-2-centos MySQL]# ps ajx | grep mysql            # 启动后
    1 23147 23146 23146 ?           -1 Sl      27   0:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
11917 23181 23180  9601 pts/41   23180 R+       0   0:00 grep --color=auto mysql
[root@VM-8-2-centos MySQL]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1130/sshd           
tcp6       0      0 :::3306                 :::*                    LISTEN      23147/mysqld       # mysqld的网络状态

9、登录 mysql

方法一:

​ 这种方法可能一些新版本并不适用

代码语言:javascript
复制
# 获取临时root密码
[liren@VM-0-3-centos 9.9]$ sudo grep 'temporary password' /var/log/mysqld.log
2021-04-12T03:23:46.153263Z 1 [Note] A temporary password is generated for
root@localhost: yLMalT:v+5l*
# 使⽤临时密码登录
[liren@VM-0-3-centos 9.9]$ mysql -uroot -p
Enter password:

# 判断修改密码时候新密码是否符合当前的策略,不满⾜报错,不让修改,关闭它
# 安全强度,默认为中,即1,要求必须包含 数字、符号、⼤⼩写字⺟,⻓度⾄少为8位
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

# 密码最⼩⻓度
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

# 修改本地登录密码,暂不授权远程登录
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'qwer@wu.888';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

# 如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码
方法二:

​ 一般来说要看版本

代码语言:javascript
复制
# 如果你安装的最新的mysql,没有所谓的临时密码,root默认没有密码
# 试着直接client登陆⼀下
[root@VM-8-2-centos MySQL]# mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)     # 新版本可能可以
💥方法三:

​ 对于这种方法主要就是去配置文件 my.cnf 加上跳过授权表,这种做法比较危险,但是目前我们只需要这么做,后面我们会学如何进行用户管理!

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# vim /etc/my.cnf

​ 然后在【mysqld】最后⼀栏配置(不知道是什么,就放在配置⽂件最后)加⼊:skip-grant-tables 选项,并保存退出

​ 接着重启 mysql 服务:

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# systemctl restart mysqld          # 除了使用restart,用stop搭配start也可以

​ 然后通过方法一中的登录操作就能免密登录了,直接按回车即可:

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# mysql -u root -p          # -u表示以谁的身份登录
Enter password:         # 这里按回车就行
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.42 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

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> quit             # 在此输入sql指令,使用quit可以退出
Bye
[root@VM-8-2-centos MySQL]#

10、设置开机启动(可以不设)

​ 对于云服务器来说,因为开启 mysql 服务其实是个守护进程,所以开机启动没必要!

​ 而如果是虚拟机的话,则会在开机的时候自己启动 mysql 服务!

代码语言:javascript
复制
#开启开机⾃启动
systemctl enable mysqld
systemctl daemon-reload

11、配置 my.cnf 文件

​ 配置⼀下 my.cnf 主要是为了数据库客⼾端和服务器的**编码格式**,一般设为 utf-8 比较好,另外一些端口号的设置等等,上面给出的跳过授权表免密登录也是一个配置之一!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZqBAmSY-1688361719028)(../img/image-20230605224206721.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZqBAmSY-1688361719028)(../img/image-20230605224206721.png)]

​ 配置完毕,重启 mysql 即可!

12、常见问题

比如 mysql 已经配置了客⼾端服务器 utf-8 编码,但是无法输入中文:确保你在终端命令行中可以输入中文

代码语言:javascript
复制
[root@VM-8-2-centos MySQL]# env | grep LANG
LANG=en_US.utf8

安装遇到秘钥过期的问题:

代码语言:javascript
复制
Failing package is: mysql-community-client-5.7.39-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
解决⽅案:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

💥💥💥mysql 常见登陆选项

在这里插入图片描述
在这里插入图片描述
  • 如果我们在配置文件 my.cnf 中配置了默认端口号的话,我们可以不使用 -P 选项来指定访问的端口号
  • 如果我们不使用 -h 来指定登录哪台部署了 mysql 的主机,那么会默认登录本地主机
  • 目前我们采用免密码方式登录来学习,等后面学习了用户管理之后才要设置密码
  • 输入密码是不会回显的
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 1、关闭不需要的环境
  • 2、检查并删除系统安装包
  • 3、获取 mysql 官方 yum 源
  • 4、安装 mysql yum 源,对比前后 yum 源
  • 5、看看 yum 源是否安装成功
  • 6、安装 mysql 服务
  • 7、查看配置文件和数据存储位置
  • 8、启动服务
  • 9、登录 mysql
    • 方法一:
      • 方法二:
        • 💥方法三:
        • 10、设置开机启动(可以不设)
        • 11、配置 my.cnf 文件
        • 12、常见问题
        • 💥💥💥mysql 常见登陆选项
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档