MySQL5.7版本Liunx系统下安装

目录

软件准备

创建用户和安装目录

mysql安装

加入service启动项 

数据库备份:


 

软件准备

Linux服务器版本:CentOS Linux release 7.6.1810 (Core)

MySQL软件下载官网:

MySQL :: Download MySQL Community Server (Archived Versions)

我的系统是64位,选择相应选项下载。

创建用户和安装目录

useradd mysql

会自动创建mysql同名的用户组。

mkdir -p /home/mysql/data

chown -R mysql:mysql /home/mysql/data

mysql安装

解压mysql

 tar -xvf mysql-5.7.24-linux-glibc2.12-x86_64.tar

 tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

解压后目录如下:

改目录名字:

mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql57
 

编辑my.cnf文件

vim /etc/my.cnf

[mysqld]
basedir=/home/mysql/mysql57
datadir=/home/mysql/mysql57/data
#socket=/var/lib/mysql/mysql.sock
socket=/home/mysql/mysql57/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

#数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id = 1

#系统数据库编码设置,排序规则
character_set_server = utf8mb4
collation_server = utf8mb4_bin

#可能的连接数
#指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。
back_log = 1024

#linux下要严格区分大小写,windows下不区分大小写
#1表示不区分大小写,0表示区分大小写。
#lower_case_table_names = 0
lower_case_table_names = 0

#默认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


#是MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段
#如果不能,可以尝试增加sort_buffer_size变量的大小
sort_buffer_size = 16M

#应用程序经常会出现一些两表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的时候(all/index join),
#为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。
#当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join 的表进行 Join 操作
#然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer 中,
#如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。
#若果多表连接需求大,则这个值要设置大一点。
join_buffer_size = 16M


#索引块的缓冲区大默认16M
key_buffer_size = 15M
# 消息缓冲区会用到该列,该值太小则会在处理大包时产生错误。如果使用大的text,BLOB列,必须增加该值
max_allowed_packet = 32M

# mysql服务器最大连接数值的设置范围比较理想的是:服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上
# Max_used_connections / max_connections * 100% 
max_connections = 512
# 阻止过多尝试失败的客户端,如果值为10时,失败(如密码错误)10次,mysql会无条件阻止用户连接
max_connect_errors = 1000000


#单服务器环境,使用skip-external-locking,关闭外部锁定,
#多服务器使用同一个数据库目录时,必须开启external-locking,也就是说注释掉skip-external-locking
skip-external-locking


#最大的空闲等待时间,默认是28800,单位秒,即8个小时
#通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接
#交互式连接超时时间,超过这个时间自动断开连接
interactive_timeout = 600
#非交互式连接超时时间,超过这个时间自动断开连接
wait_timeout = 600

#它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)
#如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下
tmp_table_size = 96M
max_heap_table_size = 96M



##慢查询,开发调式阶段才需要开启慢日志功能。上线后关闭
slow_query_log = OFF
#慢日志文件路径
slow_query_log_file = /home/mysql/mysql57/logs/slow_query.log
#该值是ON,则会记录所有没有利用索引来进行查询的语句,前提是slow_query_log 的值也是ON
log_queries_not_using_indexes = ON
#记录管理语句
log-slow-admin-statements
#MySQL能够记录执行时间超过参数 long_query_time 设置值的SQL语句,默认是不记录的。超过这个时间的sql语句会被记录到慢日志文件中
long_query_time = 2


#默认使用InnoDB存储引擎
default_storage_engine = InnoDB


[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
pid-file=/home/mysql/mysql57/mariadb/mariadb.pid
log-error=/home/mysql/mysql57/mariadb/mariadb.log
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

进入mysql的bin目录:

cd /home/mysql/mysql57/bin

./mysqld --user=mysql --basedir=/home/mysql/mysql57/ --datadir=/home/mysql/mysql57/data/ --lower-case-table-names=1 --initialize

其中:--lower-case-table-names=1 表示表名不区分大小写

得到的root的临时密码是I!>*29(NzFI3 

如果因为配置问题导致初始化失败,只能删除data目录,然后重新初始化

 修改support-files/mysql.server文件中5个路径,路径是你自己的安装路径

 启动服务:

./mysql.server  start

启动报错,经查询是因为 /etc/my.cnf里面的datadir写错了。

 修改后重启:

登录mysql,密码是刚才的初始化密码

报错原因是我在 /etc/my.cnf里写了socket的路径,而在/tmp目录下没有,创建一个软连接即可:

ln -s /home/mysql/mysql57/mysql.sock /tmp/mysql.sock

 重新启动成功。

加入service启动项 

cp mysql.server /etc/rc.d/init.d/mysqld

systemctl daemon-reload

service mysqld restart

修改密码为root,实际应用场景,这个密码需要设计得更复杂,通常包含大小写字母、符号等 

set password for root@localhost = password('root');
flush privileges;

查看目前的数据库:

show databases; 

 

 选择mysql数据库:

修改远程连接数据库并生效
 

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

flush privileges;

远程连接成功! 

创建新用户:

CREATE USER 'wjz'@'LOCALHOST' IDENTIFIED BY '123';

'%' - 所有情况都能访问
‘localhost’ - 本机才能访问
’111.222.33.44‘ - 指定 ip 才能访问

 更改wjz用户可以远程访问数据库

alter user 'wjz'@'%' identified with mysql_native_password by '123';

 创建新数据库:

CREATE DATABASE test; 

用户授权:

grant all on 数据库名.数据库表 to 用户名@'%'  identified by "密码";
all 可以替换为 select,delete,update,create,drop
数据库名 所有的 用*
数据库表 所有的 用*

增加wjz用户访问mysql数据库的权限 

grant all privileges on test.* to wjz@'%' identified by "password" ;

flush privileges;

mysql5.7与8.0密码加密方式

1.mysql5.7默认是方式是mysql_native_password;
2.mysql8.0默认是caching_sha2_password

数据库备份:

方式1:

备份步骤

1、向所有表施加读锁

FLUSH TABLES WITH READ LOCK;  
2、备份数据文件

mkdir /mysql_bak
cp -a /mysql57/* /mysql_bak

3.模拟数据丢失并恢复

数据丢失
rm -rf /mysql57l/*

恢复数据
cp -a /mysql_bak/* /mysql57

重启服务

方式2:

mysqldump

备份前应退出MySQL,转到在bin目录下键入:mysqldump -u (用户名) -p(密码) (所要备份的库名) > (将要备份到的文件名,通常文件类型为.sql) 

同版本的数据库之间可以全库备份,不同版本数据库之间建议单库备份!!!

全库备份:

mysqldump -uroot -p --all-databases  --lock-tables=0 > all.sql.bak

参数说明:

--all-databases    指定所有的数据库   --lock-all-tables  表示锁定所有的表  

-lock-tables=0 加上0这个参数,表示不锁表备份

单库备份:

mysqldump -uroot -p 数据库名 >testbak.sql

二、还原

方法一:

退出MySQL,转到在bin目录下键入:mysql  -u (用户名) -p(密码) (将要还原到的位置,填数据库名) < (备份文件名)

注意:首先,说还原最容易被忽略的地方,博主初学MySQL时就因为这而犯难。特别要注意被还原的文件中数据库或表中所包含的格式,必须满足在某数据库中还原的该数据库也具有同样格式!如:utf8格式,中英文符号,空格等等。

mysql  -u root -p  数据库名<all.sql.bak


​​​​​​mysql5.7数据库mysqldump和XBK备份和恢复_qq_47501059的博客-CSDN博客_mysql5.7数据备份

参考文章:

在linux下安装mysql5.7_开心lulu的博客-CSDN博客_centos7编译安装mysql5.7

systemctl命令_怎么把mysqld.service服务加入到systemctl_weixin_39758229的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大宇进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值