linux下安装tar文件的mysql5.7

一、到官网下载安装包

可以选择使用rpm的文件安装或者使用tar文件安装https://downloads.mysql.com/archives/community/

此处我是用的是tar文件安装

若使用rpm安装,参考这篇博客

https://www.cnblogs.com/lzhdonald/p/12511998.html

二、安装

1.首先查看是否已经安装异步IO接口libaio

rpm -qa|grep libaio

若未安装使用yum安装下

yum -y install libaio

2.将安装包解压到自定义的目录中

tar xvzf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz -C /server/

并将加压后的目录名改为mysql-5.7

3.添加系统用户组和组成员用户,并将目录赋予群成员以及群组

添加系统sqldb组

groupadd sqldb

在sqldb组中添加成员mysql_user_dev

useradd -r -g sqldb mysql_user_dev

赋予解压后的目录权限于用户mysql_user_dev和群组sqldb

4.安装mysql,进入mysql-5.7目录

bin/mysqld --initialize --user=mysql_user_dev --basedir=/server/mysql-5.7 --datadir=/server/mysql-5.7/data

执行完后会生成一个临时随机密码

执行以下命令创建RSA private key

bin/mysql_ssl_rsa_setup --datadir=/server/mysql-5.7/data

执行完后进入data目录发现有的文件的用户以及用户组不是刚刚创建的,因此再改一下

执行指令修改目录的用户以及用户组

chown -R mysql_user_dev:sqldb ./

再次查看data目录下的文件的用户及用户组信息

5.配置/etc/my.cnf文件

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/server/mysql-5.7
datadir=/server/mysql-5.7/data
socket=/tmp/mysql.sock
#不区分大小写 
lower_case_table_names = 1
#不开启sql严格模式
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
log-error=/var/log/mysqld.log
pid-file=/server/mysql-5.7/data/mysqld.pid
#
# include all files from the config directory
#
#!includedir /etc/my.cnf.d

配置文件的说明解释:

port = 3306:指定了Mysql开放的端口;basedir=/server/mysql-5.7:指定Mysql安装的绝对路径;datadir = /server/mysql-5.7/data:指定Mysql数据存放的绝对路径;socket = /tmp/mysql.sock:套接字文件;log-error = /var/log/mysqld.log:mysql生成的错误日志存放的路径,它是一个文本文件,遇到有什么问题想查看日志时可以到这个文件里去找线索

配置文件的参数及参数值详细说明可以查看这两篇文章:

https://www.cnblogs.com/JonaLin/p/11067661.html

https://www.cnblogs.com/langdashu/p/5889352.html

6.可以设置开机自启动MySQL

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

7.配置mysql的环境变量

view /etc/profile

保存后再编译下

source /etc/profile

8.启动并设置开机自启动,修改登录密码

报错,在刚刚复制粘贴的/etc/init.d/mysqld文件添加权限即可

然后重启mysqld,成功

设置mysqld开机自启动

systemctl enable mysqld

9.结合密码登录mysql

先输入指令

mysql -uroot -p

然后输入上面的临时密码,登录成功

登录后修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

设置允许远程连接数据库

update user set user.host='%' where user.user = 'root';

注意上面的%的意思:%是一个通配符,用以匹配所有的IP地址,但是不能匹配到locahost这个特殊的域名

详细解释可以查看这篇文章:

https://gohalo.me/post/mysql-localhost-vs-127.0.0.1-introduce.html

刷新权限

flush privileges;

授权新用户

grant all privileges on *.* to 'user_test'@'%' identified by '123123' with grant option;

查看是否大小写敏感,若显示的为0,则是敏感的,应在/etc/my.cnf文件后面加上属性,属性值lower_case_table_names=1,然后重启

开放端口,MySQL的默认端口是3306,若需要可以自行配置:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

参数说明:

--zone #作用域

--add-port=3306/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数重启后失效

然后重启下防火墙,查看开放端口的列表

然后使用windows的mysql连接工具查看数据库的连接我是用navicat,成功,上述user_test用户的权限是赋予全部,实际开发中,会根据不同账号赋予不同的权限

至此mysql安装成功

下面简单的做一些数据库的操作吧

查询当前操作的用户

而在实际开发中有时有的数据库不会暴露给某个用户,而且该用户只有查询权限,权限级别较低

例如:增加一个test2用户,密码为123456,只能在192.168.236.1上登录,并对数据库testdb2只有有查询,没有增加,修改和删除的功能。需要在mysql的root用户下进行

grant select on testdb2.* to test2@192.168.236.1 identified by '123456';

 此时本机连接数据库连不上,只能特定的ip能连接的上

只有查询权限,无其余权限

注意图中有information_schema的数据库未分配权限却也能看到是由于:information_schema只是一个视图,新建用户就算没有任何权限都能查到这个视图,但该用户只能看到自己被授权的信息,information_schema库的表是只读表,其实是视图。

详情解释查看这篇文章:https://www.jianshu.com/p/5903e8c002ed

详情的权限分配查看这篇文章:https://www.cnblogs.com/wangchaoyuana/p/7545419.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值