官网下载地址:mysql下载
点击上面的下载传送门,来到官网的下载地址,如图1,目前(2020-05-05)最新版本是8.0.20,当然本着好玩,你可装一下最新版本,但是企业实战的话,一般都会选择前一个release的稳定版本,那我们可以点击Looking for previous GA versions?
,图片内容会发生变化,可以参考选择如图2 的配置选项下载。
因为我的操作系统是64位的,所以选择64位的tar包,点击下载;因为Sun公司被Oracle收购,伟大的产品mysql,java等也一并归到了Oracle名下,下载的时候需要你登录/注册Oracle账号;下完后是mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
,利用MobaXTerm
,WinSCP
等工具上传到你的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用户和用户组的详解可以参考博客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
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
里面,其中bin
folder是一些启动文件的指令,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 data
shel指令在该文件下面创建一个data
folder用来存放启动日志以及一些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表示:重新启动
安装基本就大功告成了,可以利用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的shell黑框环境下,工作效率比较低 ,而且观看数据也不方便,于是就诞生了很多利用jdbc驱动的连接工具,这里推荐几款,我自己装了也是装了多款的。