Linux(CentOS-7)下安装MySQL-5.7.30

MySQL下载

  官网下载地址:mysql下载
  点击上面的下载传送门,来到官网的下载地址,如图1,目前(2020-05-05)最新版本是8.0.20,当然本着好玩,你可装一下最新版本,但是企业实战的话,一般都会选择前一个release的稳定版本,那我们可以点击Looking for previous GA versions?,图片内容会发生变化,可以参考选择如图2 的配置选项下载。
Linux(CentOS-7)下安装MySQL-5.7.30_第1张图片

图1 mysql官网下载界面

  因为我的操作系统是64位的,所以选择64位的tar包,点击下载;因为Sun公司被Oracle收购,伟大的产品mysql,java等也一并归到了Oracle名下,下载的时候需要你登录/注册Oracle账号;下完后是mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz,利用MobaXTermWinSCP等工具上传到你的Linux下,如上传到/data/tools/下;
  当然如果你的Linux服务器有网的话,你也可以直接在/data/tools/直接用wget指令下载:

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

Linux(CentOS-7)下安装MySQL-5.7.30_第2张图片

图2 mysql官网下载配置选择

Linux下新增mysql用户和mysql用户组

  关于操作Linux用户和用户组的详解可以参考博客Linux基础配置——Linux配置用户和用户组操作(三),这里不做详细介绍,一笔带过,利用有sudo权限的账号,新建mysql组,shell指定如下:

sudo groupadd -g 3000 mysql

  在mysql组上新增一个mysql账号,并设置用户mysql登录linux的密码,shell指令如下:

#新增用户mysql
sudo useradd mysql -g 3000 -u 3000 -m

#设置mysql的登录linux的密码,注意哈,这里不是登录mysql数据库的密码,不要乱搞哈。
sudo passwd mysql

输入后会有以下提示,
更改用户 hadoop 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新

  给mysql用户设置sudo权限,利用指令visudo打开sudo权限的编辑文件,文件内找到root ALL=(ALL) ALL,添加一条mysql ALL=(ALL) ALL,然后wq!指令保存文件并退出 文件,结果参考如下:

……
root    ALL=(ALL)       ALL
mysql  ALL=(ALL)       ALL
……

  进入/data/tools folder下,修改下载文件的权限,归属主人,归属组,然后解压解下载来的tar包,指定如下:

#切换到mysql用户下操作
su mysql

#修改tar包的权限
sudo chmod 755 mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

#修改tar包的属主
sudo chown mysql mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

#修改tar包的属组
sudo chgrp mysql mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

#解压tar包,有点大,耐心稍等解压完
sudo tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

MySQL安装

  卸载重装系列排查,如果原系统带了mysql,但是需要卸载重装系列,可以参考以下代码,没有的话直接跳过这里。

#检测系统是否自带Mysql
 rmp -qa|grep mysql

#如果有进行强行卸载
rpm -e --nodeps mysql-libs-5.1.52-1.el6_0.1.x86_64

#检测系统是否自带mariadb
rpm -qa|grep mariadb

#如果有,把mariadb组件全部卸载
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
rpm -e --nodeps mariadb-5.5.64-1.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.64-1.el7.x86_64

  进入解压完的folder mysql-5.7.30-linux-glibc2.12-x86_64里面,其中binfolder是一些启动文件的指令,support-files folder是一些配置文件,具体详情如下:

[root@node1 tools]# cd /data/tools/mysql-5.7.30-linux-glibc2.12-x86_64
[root@node1 mysql-5.7.30-linux-glibc2.12-x86_64]# ll
总用量 292
drwxrwxr-x.  2 mysql mysql   4096 5月   5 12:14 bin
drwxrwxr-x.  2 mysql mysql     55 5月   5 12:14 docs
drwxrwxr-x.  3 mysql mysql   4096 5月   5 12:14 include
drwxrwxr-x.  5 mysql mysql    230 5月   5 12:14 lib
-rw-r--r--.  1 mysql mysql 275235 3月  24 01:35 LICENSE
drwxrwxr-x.  4 mysql mysql     30 5月   5 12:14 man
-rw-r--r--.  1 mysql mysql    587 3月  24 01:35 README
drwxrwxr-x. 28 mysql mysql   4096 5月   5 12:14 share
drwxrwxr-x.  2 mysql mysql    112 5月   5 15:35 support-files

  利用sudo mkdir datashel指令在该文件下面创建一个datafolder用来存放启动日志以及一些mysql的配置产生文件以及数据库的数据存放目录,指令如下:

sudo mkdir data

  进入刚刚说到的support-files folder,利用sudo vim my_default.cnf新建一个默认的mysql配置文件,里面的内容如下,确认配置后wq!保存并退出:

[mysqld]
#设置mysql的安装目录
basedir = /data/tools/mysql-5.7.30-linux-glibc2.12-x86_64
#设置mysql数据库的数据存放目录
datadir = /data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/data
#设置端口
port = 3306

socket = /tmp/mysql.sock
#设置字符集
character-set-server=utf8
#日志存放目录
log-error = /data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/data/mysqld.log
pid-file = /data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/data/mysqld.pid
#允许时间类型的数据为零(去掉NO_ZERO_IN_DATE,NO_ZERO_DATE)
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

  将配置文件复制到/etc/my.cnf,注意,这个名字不要搞错,指定如下:

 sudo cp my_default.cnf /etc/my.cnf

  初始化mysql,需要进入/data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/bin folder下,然后初始化指令如下:

./mysqld --initialize --user=mysql --basedir=/data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/ --datadir=/data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/data/

  初始化如果报错:./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or 就安装libaio,如果没有则跳过,安装指令如下:

 yum install libaio

  初始化完成后,记得我们之前配置的日志存放目录吗?没错就是/data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/data/mysqld.log,查看里面的内容,如下,最后一句话就是登录mysql的root账号的临时密码,请妥善保管下,待到重置密码后就可以弃用了,一定要重置密码吗?你觉得不重置,谁都能来这里看看这个log文件然后得到root密码是否可行呢?

[mysql@node1 data]$ cat /data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/data/mysqld.log
2020-05-05T07:36:27.025151Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2020-05-05T07:36:27.025366Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
2020-05-05T07:36:27.026008Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-05-05T07:36:27.026031Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2020-05-05T07:36:27.026037Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2020-05-05T07:36:27.429732Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-05-05T07:36:27.496941Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-05-05T07:36:27.558599Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 212c4a0b-8ea3-11ea-9f49-000c2940070c.
2020-05-05T07:36:27.562967Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-05-05T07:36:29.158817Z 0 [Warning] CA certificate ca.pem is self signed.
2020-05-05T07:36:29.468583Z 1 [Note] A temporary password is generated for root@localhost: r_F,arDPO4p&

  把启动脚本放到开机初始化目录下,指令如下:

cp support-files/mysql.server /etc/init.d/mysql

  注册开机启动mysql服务,指令和查看详情以及解释如下:

[root@node1 support-files]# chkconfig  --add mysql
[root@node1 support-files]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

mysql           0:关    1:关    2:开    3:开    4:开    5:开    6:关
netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关

0,1,2,3,4,5,6表示的是等级
1表示:单用户模式
2表示:无网络连接的多用户命令行模式
3表示:有网络连接的多用户命令行模式
4表示:不可用
5表示:带图形界面的多用户模式
6表示:重新启动

MySQL一些配置

  安装基本就大功告成了,可以利用shell指令service mysql start启动mysql服务了,具体如下:

[mysql@node1 data]$ service mysql start
Starting MySQL. SUCCESS!

   shell下mysql的登录指令在/data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/bin目录下,但是每次都要切到这个目录下累不累呀,怎么办呢,设置环境变量对吧,利用sudo vim /etc/profile指令编辑环境变量的文件,然后新增一句如下:

export PATH=$PATH:/data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/bin

  然后wq!保存退出后,别忘了利用shell指令source /etc/profile刷新下环境变量;
  利用root账户登录mysql,因为我们做了环境变量只需要:

mysql -u root -p
#然后输入刚刚日志文件内的临时密码

#如果不做环境变量
/data/tools/mysql-5.7.30-linux-glibc2.12-x86_64/bin/mysql -u root -p
#然后输入刚刚日志文件内的临时密码

  输入密码后进入mysql的客户端环境,有 mysql>字样开头,重置root的密码,赋予root账号完全掌控雷电的权限,然后刷新,mysql指令如下;


mysql> set password=password('123456');

mysql> grant all privileges on *.* to root@'%' identified by '123456';

mysql> flush privileges;

  添加远程访问权限(注意远程能访问的前提必须是远程的终端到这台mysql服务器的网络端口已经开通),指令如下:


mysql> use mysql;

mysql> update user set host='%' where user = 'root';

mysql> flush privileges;

  注意:如果更改时报错:ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY',就先查询一下是否已更改,最后执行刷新。

  重启mysql服务生效,指令如下:

service mysql restart

MySQL连接工具推荐

  mysql的shell黑框环境下,工作效率比较低 ,而且观看数据也不方便,于是就诞生了很多利用jdbc驱动的连接工具,这里推荐几款,我自己装了也是装了多款的。

  1. SQLyog:DBA的最爱之一,稳定,支持两个mysql服务器之间复制数据库,表,试图等,以及智能提示,Tab键补全关键字等,使用起来非常方便,缺点:复制查询结果指定列复制某一列数据有点烦,收费。
  2. Navicat :收费版本,功能强大,智能提示补全,图形界面相结合,非常人性化,复制查询结果非常方便,除了mysql也支持其他数据库,强大;缺点:默认执行窗口的所有语句,如果要执行选定某一句,一定要鼠标右键,再选择跑指定语句,就选鼠标选定了某一句,再点菜单栏的运行按钮的话,也是执行全部,非常反人类的设计。
  3. DBeaver:跟Navicat很像,而且没有Navicat那个反人类的设计,最重要是免费,免费,免费,除了mysql也支持其他数据库,也支持大数据的Hive,联网后会自动下载相关的jdbc驱动包,缺点 :暂时没发现。
  4. JetBrains DataGrip :除了mysql也支持其他数据库,也支持大数据的Hive,联网后会自动下载相关的jdbc驱动包,用户体验还不错;缺点:收费!
  5. mysql workbench : mysql官方提供的默认连接工具,之前体验过一段时间,大数据量操作 容易卡死,感觉不怎的,但是免费,可以凑合用。
  6. HeidiSQL:传闻这个是Sun公司被收购后,原始mysql团队担心Oracle收购MySQL后乱搞,又自己研发了一款出来,支持图形界面操作,多数据源,免费开源,一样大数据量容易卡死,总体很不错。

你可能感兴趣的:(MySQL)