(内网环境下安装及配置,并将数据保存指向某个文件夹,因为博主这里的数据文件夹是有硬盘挂靠的)
centos 7(aliyun) CentOS-7-x86_64-DVD-1810
mysql mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
下载 centos 7
centos7免除了6版本繁琐的安装节奏,这里就不展示安装步骤了,有一个细节是要在安装系统的时候配置好网络环境,自动分配地址,默认是没有配置的。
下载mysql8
下载完成后通过ftp类的工具将其放上去
解压.xz后缀的文件
方法一:
需要用到两步命令,首先利用 xz-utils 的 xz 命令将 mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz 解压为mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz,其次用 tar 命令将mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz 完全解压。
xz -d mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
tar -xf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
方法二(推荐)
tar -Jxf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
这里需要提到的一点是:
mysql官网下载的有很多版本,以前的tar, 现在的xz,需要注意的是有的解压出来是直接可用的,有的则只有cmake文件,则需要编译之后再进行使用,具体的编译过程可以在百度搜索,这里不做赘述。
修改名字,移动到/usr/local文件夹下
$ mv mysql-8.0.17-linux-glibc2.12-x86_64 mysql
$mv mysql /usr/local/
移动到根目录下的data文件夹,在其下创建/data/mysql/data ,因为博主需要将数据保存到/data/mysql/data 目录下
$cd /data
$mkdir mysql
$cd mysql
$mkdir data
$cd data
$pwd
显示如下目录
编辑my.cnf文件
可以看到,除了basedir是指向/usr/local, 其他全部都放在/data/mysql 文件夹下
关于my.cnf可能用到的参数参考 https://www.cnblogs.com/mydriverc/p/8297144.html
[client]
port=3306
socket=/data/mysql/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/data/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/data/mysql/data
log-error=/data/mysql/error.log
pid-file = /data/mysql/mysql.pid
transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1
sql_mode = “STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO”
https://blog.csdn.net/qq_34585332/article/details/88032413
sql_mode在5.7有 NO_AUTO_CREATE_USER,但在8.0以后已经取消了
创建用户组
$groupadd mysql
创建用户
$useradd -g mysql mysql
更改目录权限
修改/data/mysql 的权限给mysql用户
$chown -R mysql:mysql /data/mysql
修改/usr/local/mysql 的权限给mysql用户
$chown -R mysql:mysql /usr/local/mysql
将读写权限赋值给两个文件夹
$chmod -R 755 /data/mysql /usr/local/mysql
初始化
$cd /usr/local/mysql
$./bin/mysqld --initialize --user=mysql
启动mysql
$./support-files/mysql.server start
到这里mysql已经安装成功了,但是我们最终的目标是navicat能远程连接上,还任重道远呢!
配置 service mysql start启动
查看init.d 下是否有mysql(关键就是将我们解压的mysqld复制黏贴到init.d下面)
查看指定文件夹下是否有mysql
$ll /etc/init.d/ | grep mysql
查找自己安装的mysql.server文件
$find / -name mysql.server
因为我们刚才安装 /usr/local/mysql目录下,所以可以直接使用下面这句
$cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
然后就可以在任意地方运行service mysql restart 啦
设置开机启动 在/etc/init.d文件夹下操作
$cd /etc/init.d
$chmod 755 /etc/init.d/mysql
$chkconfig --add mysql
$chkconfig --level 345 mysql on
$service mysql restart
ps:开机后通过 service mysql status 来判断mysql是否运行中
设置环境变量
$ vi /etc/profile
在里面添加
export PATH=$PATH:/usr/local/mysql/bin
重启服务
$source /etc/profile
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Ab123456’;
查看用户权限
select host,user from mysql.user;
grant 授权
all 所有权限
. 表示针对 库.表 的权限,这里表示对所有库,所有表都授权
root 表示用户名
%表示全网 localhost表示内网允许
在 my.cnf 的mysqld 下增加
default_authentication_plugin=mysql_native_password
进入mysql命令行
$mysql -uroot -p
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘Ab123456’;
FLUSH PRIVILEGES;
到这里所有mysql的设置都已经完成了,接下来是防火墙相关,如果你不想关闭防火墙,可以选择开放3306端口
修改相关文件
yum -y install iptables-services
$vi /etc/sysconfig/iptables
增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
$systemctl restart iptables.service #重启防火墙使配置生效
这里我选择的是直接关闭防火墙…
$systemctl stop firewalld.service #停止firewall
$systemctl disable firewalld.service #禁止firewall开机启动
##值得一提的是java 连接mysql的版本要记得换成 和mysql版本相同的jar包,不然会报错