linux安装mysql压缩包

Linux安装64位Mysql5.7

yum -y install numactl.x86_64

以安装在/usr/local目录下为例


1.到官网下载

2.解压:
cd /usr/local
mv mysql-5.7.22-linux-glibc2.12-x86_64 mysql-5.7.22


3.添加用户组和用户
#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql


4.安装
cd /usr/local/mysql
mkdir data
chown -R mysql:mysql ./
./bin/mysqld –-initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

执行完上面语句出现(Table 'mysql.plugin' doesn't exist)用下面语句尝试

(本人一直报该错,尝试多次未解决问题,最后用下面语句安装成功)

如果出现无法启动 或
./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/


#将mysql/目录下除了data/目录的所有文件,改回root用户所有
chown -R root .
#mysql用户只需作为mysql/data/目录下所有文件的所有者
chown -R mysql data


5.复制启动文件
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp /bin/my_print_defaults /usr/bin/ 


6.修改启动脚本
vi /etc/init.d/mysqld
#修改项:
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
port=3306


#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
vi /etc/profile
#添加mysql路径,加入下面内容,按ESC-->:wq保存
export PATH=$PATH:/usr/local/mysql/bin
#刷新立即生效
source /etc/profile


7.修改mysql配置项
vi /etc/my.cnf
配置如下:
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
user = mysql
tmpdir = /tmp
symbolic-links=0


[mysqld_safe]
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
!includedir /etc/my.cnf.d


8.启动mysql
service mysqld start;
执行命令:ps -ef|grep mysql 看到mysql服务说明启动成功
如启动失败,删除 /usr/local/mysql/data下所有文件,重新执行./bin/mysqld –-initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/,再启动
service mysqld stop;
9.进入mysql修改初始密码,修改远程连接的用户权限问题
mysql -uroot -p
ALTER USER USER() IDENTIFIED BY 'XXXX';
use mysql;
update user set host = '%' where user ='root';
flush privileges;


修改密码
update user set authentication_string=password('XXXX') where user='root';
ALTER USER USER() IDENTIFIED BY 'root#1806';




10.重置密码
vi /etc/my.cnf
在[mysqld]下面加上 skip-grant-tables 
用service mysqld restart重启mysql


# mysql -uroot -p
mysql> use mysql; 
mysql> update user set password=password('XXXX') where user='root'; 
mysql> flush privileges;

退出mysql
删除skip-grant-tables

另外

首先下载mysql

地址:https://dev.mysql.com/downloads/mysql/

下载社区版mysql

下载完成后;ftp上传到服务器 /user/local/目录下,这个自己定!

使用命令 ,对mysql进行解压缩

[root@instance_4dbde0 local]# tar -zxvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz 

使用命令,对mysqll文件夹进行重命名

[root@instance_4dbde0 local]# mv mysql-5.7.20-linux-glibc2.12-x86_64  mysql-5.7.20

添加用户组和用户

#添加用户组
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql

安装

#在/usr/local/mysql-5.7.20目录下新建data文件夹,以后的数据库文件将放在这里
[root@instance_4dbde0 mysql-5.7.20]# pwd
/usr/local/mysql-5.7.20
[root@instance_4dbde0 mysql-5.7.20]# mkdir data

复制代码

[root@instance_4dbde0 mysql-5.7.20]# chown -R mysql:mysql ./

#mysql_install_db 被废弃了,取而代之的是 mysqld –-initialize
[root@instance_4dbde0 mysql-5.7.20]# ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.7.20/ --datadir=/usr/local/mysql-5.7.20/data/
#将mysql/目录下除了data/目录的所有文件,改回root用户所有

 [root@instance_4dbde0 mysql-5.7.20]# chown -R root .

 #mysql用户只需作为mysql-5.7.20/data/目录下所有文件的所有者
 [root@instance_4dbde0 mysql-5.7.20]# chown -R mysql data

#复制启动文件
[root@instance_4dbde0 mysql-5.7.20]# cp support-files/mysql.server /etc/init.d/mysqld 

[root@instance_4dbde0 mysql-5.7.20]# chmod 755 /etc/init.d/mysqld

[root@instance_4dbde0 bin]# cp /usr/local/mysql-5.7.20/bin/my_print_defaults /usr/bin/

复制代码

复制代码

#修改启动脚本
[root@instance_4dbde0 mysql-5.7.20]# vi /etc/init.d/mysqld
#修改项:
basedir=/usr/local/mysql-5.7.20/
datadir=/usr/local/mysql-5.7.20/data
port=3306
#启动服务
[root@instance_4dbde0 mysql-5.7.20]# service mysqld start
#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
[root@instance_4dbde0 mysql-5.7.20]# vi /etc/profile
#添加mysql路径
export PATH=$PATH:/usr/local/mysql-5.7.20/bin
#刷新立即生效
[root@instance_4dbde0 mysql-5.7.20]# source /etc/profile

复制代码

 配置以上信息之后,基本就可以启动了mysql(如果不能启动,请看最后的配置文件),但是现在还缺少mysql的配置文件,即my.cnf文件(没有它Mysql也可以使用内置的默认参数启动),最后说

接下来就可以使用命令登录mysql了

[root@instance_4dbde0 bin]# mysql -uroot -p
Enter password: 

这个时候输入mysql的root密码就可以登录了(这个输入密码的操作有可能直接按Enter就可以登录mysql,即默认的无密码),登录之后可以更改root密码,

复制代码

mysql>use mysql;

mysql> update user set authentication_string=password("新密码") where user='root';        【密码注意大小写,建议密码设置复杂点,否则会出现一些奇怪的问题,下面会说到】

mysql> flush privileges;

mysql> exit; 

复制代码

注意:登陆成功后如果使用命令出现如下情况

也即:登陆成功后,使用任何命令都出现 1820错误:

那么直接使用如下命令,即可解决

复制代码

mysql>  SET PASSWORD = PASSWORD('root');
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.02 sec)

mysql> 

复制代码

但是如果你不知道mysql的root密码的话,想进行修改,那么首先你得有Linux操作系统的root权限才可以进行修改;

可查看下面链接

https://www.cnblogs.com/kyosusan/p/5198934.html

更改过密码后,登录mysql,进行一些操作时可能汇报1820错误;原因是:MySQL5.7 加强了安全保障,以上意思是密码不符合安全策略要求,我们输入一个8位或以上长度,复杂一点的密码

在linux服务器中登录mysql成功后,在本地客户端登录mysql可能会报错  mysql 1130 is not allowed to connect

解决方法:https://www.cnblogs.com/xyzdw/archive/2011/08/11/2135227.html

mysql配置文件


安装好Mysql,也可以启动了,但不代表在使用的时候没有问题,所以需要设置myqsl的配置文件,一般来说在Mysql的安装目录下的support-files目录下会有一个my-default.cnf文件

 
[root@instance_4dbde0 init.d]# cd /usr/local/mysql-5.7.20/support-files/
[root@instance_4dbde0 support-files]# pwd
/usr/local/mysql-5.7.20/support-files
[root@instance_4dbde0 support-files]# ls
magic  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@instance_4dbde0 support-files]# 

然而我这里并没有,如果有的话使用命令

1

[root@instance_4dbde0 support-files]# cp my-default.cnf /etc/my.cnf

  如果没有的话,就自己新建一个my.cnf,再在网站上找一个my.cnf模块更改。即可,更改配置文件之后需要重启mysql

[root@instance_4dbde0 support-files]# service mysqdl restart

 附上my.cnf模板

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

[client]

port = 3306

socket = /tmp/mysql.sock

default-character-set=utf8

[mysqld]

###############################基础设置#####################################

#Mysql服务的唯一编号 每个mysql服务Id需唯一

server-id = 1

#服务端口号 默认3306

port = 3306

default_storage_engine=InnoDB

skip-name-resolve

#mysql安装根目录

basedir = /usr/local/mysql-5.7.20

#mysql数据文件所在位置

datadir = /data/mysql/data

#临时目录 比如load data infile会用到

tmpdir  = /tmp

#设置socke文件所在目录

socket  = /tmp/mysql.sock

#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容

skip-external-locking

#只能用IP地址检查客户端的登录,不用主机名

skip_name_resolve = 1

#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)

transaction_isolation = READ-COMMITTED

#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)

character-set-server = utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应

collation-server = utf8mb4_general_ci

#设置client连接mysql时的字符集,防止乱码

#init_connect=‘SET NAMES utf8mb4‘

#是否对sql语句大小写敏感,1表示不敏感

lower_case_table_names = 1

#最大连接数

max_connections = 400

#最大错误连接数

max_connect_errors = 1000

#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值

explicit_defaults_for_timestamp = true

#SQL数据包发送的大小,如果有BLOB对象建议修改成1G

max_allowed_packet = 128M

#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭

#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效

interactive_timeout = 2880000

wait_timeout = 2880000

#内部内存临时表的最大值 ,设置成128M。

#比如大数据量的group by ,order by时可能用到临时表,

#超过了这个值将写入磁盘,系统IO压力增大

tmp_table_size = 134217728

max_heap_table_size = 134217728

#禁用mysql的缓存查询结果集功能

#后期根据业务情况测试决定是否开启

#大部分情况下关闭下面两项

query_cache_size = 0

query_cache_type = 0

#MySQL5.7 group by新特性,报错1055,具体需要根据本身情况进行设定,没有固定值

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

#####################用户进程分配到的内存设置BEGIN#############################

##每个session将会分配参数设置的内存大小

#用于表的顺序扫描,读出的数据暂存于read_buffer_size中,当buff满时或读完,将数据返回上层调用者

#一般在128kb ~ 256kb,用于MyISAM

#read_buffer_size = 131072

#用于表的随机读取,当按照一个非索引字段排序读取时会用到,

#一般在128kb ~ 256kb,用于MyISAM

#read_rnd_buffer_size = 262144

#order by或group by时用到

#建议先调整为2M,后期观察调整

sort_buffer_size = 2097152

#一般数据库中没什么大的事务,设成1~2M,默认32kb

binlog_cache_size = 524288

########################用户进程分配到的内存设置END############################

#在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中

#官方建议back_log = 50 + (max_connections / 5),封顶数为900

back_log = 130

############################日志设置##########################################

#数据库错误日志文件

log_error = error.log

#慢查询sql日志设置

slow_query_log = 1

slow_query_log_file = slow.log

#检查未使用到索引的sql

log_queries_not_using_indexes = 1

#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数

log_throttle_queries_not_using_indexes = 5

#作为从库时生效,从库复制中如何有慢sql也将被记录

log_slow_slave_statements = 1

#慢查询执行的秒数,必须达到此值可被记录

long_query_time = 8

#检索的行数必须达到此值才可被记为慢查询

min_examined_row_limit = 100

#mysql binlog日志文件保存的过期时间,过期后自动删除

expire_logs_days = 5

############################主从复制设置#####################################

#开启mysql binlog功能

log-bin=mysql-bin

#binlog记录内容的方式,记录被操作的每一行

binlog_format = ROW

#对于binlog_format = ROW模式时,减少记录日志的内容,只记录受影响的列

binlog_row_image = minimal

#master status and connection information输出到表mysql.slave_master_info中

master_info_repository = TABLE

#the slave‘s position in the relay logs输出到表mysql.slave_relay_log_info中

relay_log_info_repository = TABLE

#作为从库时生效,想进行级联复制,则需要此参数

log_slave_updates

#作为从库时生效,中继日志relay-log可以自我修复

relay_log_recovery = 1

#作为从库时生效,主从复制时忽略的错误

slave_skip_errors = ddl_exist_errors

#####################redo log和binlog的关系设置BEGIN#########################

#(步骤1) prepare dml相关的SQL操作,然后将redo log buff中的缓存持久化到磁盘

#(步骤2)如果前面prepare成功,那么再继续将事务日志持久化到binlog

#(步骤3)如果前面成功,那么在redo log里面写上一个commit记录

#当innodb_flush_log_at_trx_commit和sync_binlog都为1时是最安全的,

#在mysqld服务崩溃或者服务器主机crash的情况下,binary log只有可能丢失最多一个语句或者一个事务。

#但是都设置为1时会导致频繁的io操作,因此该模式也是最慢的一种方式。

#当innodb_flush_log_at_trx_commit设置为0,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。

#当innodb_flush_log_at_trx_commit设置为2,只有在操作系统崩溃或者系统掉电的情况下,上一秒钟所有事务数据才可能丢失。

#commit事务时,控制redo log buff持久化磁盘的模式 默认为1

innodb_flush_log_at_trx_commit = 2

#commit事务时,控制写入mysql binlog日志的模式 默认为0

#innodb_flush_log_at_trx_commit和sync_binlog都为1时,mysql最为安全但性能上压力也是最大

sync_binlog = 1

####################redo log和binlog的关系设置END############################

############################Innodb设置#####################################

#数据块的单位8k,默认是16k,16kCPU压力稍小,8k对select的吞吐量大

#innodb_page_size的参数值也影响最大索引长度,8k比16k的最大索引长度小

#innodb_page_size = 8192

#一般设置物理存储的60% ~ 70%

innodb_buffer_pool_size = 1G

#5.7.6之后默认16M

#innodb_log_buffer_size = 16777216

#该参数针对unix、linux,window上直接注释该参数.默认值为NULL

#O_DIRECT减少操作系统级别VFS的缓存和Innodb本身的buffer缓存之间的冲突

innodb_flush_method = O_DIRECT

#此格式支持压缩, 5.7.7之后为默认值

innodb_file_format = Barracuda

#CPU多核处理能力设置,假设CPU是2颗4核的,设置如下

#读多,写少可以设成2:6的比例

innodb_write_io_threads = 4

innodb_read_io_threads = 4

#提高刷新脏页数量和合并插入数量,改善磁盘I/O处理能力

#默认值200(单位:页)

#可根据磁盘近期的IOPS确定该值

innodb_io_capacity = 500

#为了获取被锁定的资源最大等待时间,默认50秒,超过该时间会报如下错误:

# ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

innodb_lock_wait_timeout = 30

#调整buffer pool中最近使用的页读取并dump的百分比,通过设置该参数可以减少转储的page数

innodb_buffer_pool_dump_pct = 40

#设置redoLog文件所在目录, redoLog记录事务具体操作内容

innodb_log_group_home_dir = /data/mysql/data/

#设置undoLog文件所在目录, undoLog用于事务回滚操作

innodb_undo_directory = /data/mysql/undo/

#在innodb_log_group_home_dir中的redoLog文件数, redoLog文件内容是循环覆盖写入。

innodb_log_files_in_group = 3

#MySql5.7官方建议尽量设置的大些,可以接近innodb_buffer_pool_size的大小

#之前设置该值较大时可能导致mysql宕机恢复时间过长,现在恢复已经加快很多了

#该值减少脏数据刷新到磁盘的频次

#最大值innodb_log_file_size * innodb_log_files_in_group <= 512GB,单文件<=256GB

innodb_log_file_size = 1024M

#设置undoLog文件所占空间可以回收

#5.7之前的MySql的undoLog文件一直增大无法回收

innodb_undo_log_truncate = 1

#innodb_undo_tablespaces = 3

innodb_undo_logs = 128

#5.7.7默认开启该参数 控制单列索引长度最大达到3072

#innodb_large_prefix = 1

#5.7.8默认为4个, Inodb后台清理工作的线程数

#innodb_purge_threads = 4

#通过设置配置参数innodb_thread_concurrency来限制并发线程的数量,

#一旦执行线程的数量达到这个限制,额外的线程在被放置到对队列中之前,会睡眠数微秒,

#可以通过设定参数innodb_thread_sleep_delay来配置睡眠时间

#该值默认为0,在官方doc上,对于innodb_thread_concurrency的使用,也给出了一些建议:

#(1)如果一个工作负载中,并发用户线程的数量小于64,建议设置innodb_thread_concurrency=0;

#(2)如果工作负载一直较为严重甚至偶尔达到顶峰,建议先设置innodb_thread_concurrency=128,

###并通过不断的降低这个参数,96, 80, 64等等,直到发现能够提供最佳性能的线程数

#innodb_thread_concurrency = 0

#强所有发生的死锁错误信息记录到error.log中,之前通过命令行只能查看最近一次死锁信息

innodb_print_all_deadlocks = 1

############################其他设置########################################

[mysqldump]

quick

max_allowed_packet = 128M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 20M

sort_buffer_size = 256k

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

[mysqld_safe]

#增加每个进程的可打开文件数量

open-files-limit = 28192

猜你喜欢

转载自blog.csdn.net/y525794266/article/details/81540250