centos 6x系统下源码安装mysql操作记录

简介:

在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的。mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配。
可以通过源码安装的方式,自定义安装自己所需版本的mysql。
---------------------------------------------------------------------------------------------------------------------------------
mysql数据库yum在线安装:
[root@host-test-huanqiu ~]# yum -y install mysql mysql-server
[root@host-test-huanqiu ~]# /etc/init.d/mysqld start
[root@host-test-huanqiu ~]# mysqladmin password "123456"
[root@host-test-huanqiu ~]# mysql -p123456
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.1.73 |
+-----------+
1 row in set (0.00 sec
---------------------------------------------------------------------------------------------------------------------------------
废话不多说,以下是centos6x系统下源码安装Mysql的操作记录,方便参考~

1、卸载旧版本
[root@host-test-huanqiu ~]# rpm -qa | grep mysql
mysql-5.1.73-7.el6.x86_64
mysql-libs-5.1.73-7.el6.x86_64
mysql-server-5.1.73-7.el6.x86_64

#普通删除模式
[root@host-test-huanqiu ~]# rpm -e mysql-5.1.73-7.el6.x86_64 mysql-libs-5.1.73-7.el6.x86_64 mysql-server-5.1.73-7.el6.x86_64 
# 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除 
[root@host-test-huanqiu ~]# rpm -e --nodeps mysql-5.1.73-7.el6.x86_64 mysql-libs-5.1.73-7.el6.x86_64 mysql-server-5.1.73-7.el6.x86_64

#删除/etc/my.cnf 
[root@host-test-huanqiu ~]# rm /etc/my.cnf

2、安装编译代码需要的包
[root@host-test-huanqiu ~]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel

3、创建mysql用户,不建立mysql用户家目录(加-M参数),也就是禁用mysql账号登陆系统 
[root@host-test-huanqiu ~]# groupadd mysql 
[root@host-test-huanqiu ~]# useradd -g mysql mysql -M -s /sbin/nologin

4、下载MySQL,源码编译安装

1
2
3
4
5
6
7
[root@host- test -huanqiu ~] # cd /usr/local/src
[root@host- test -huanqiu src] # wget -c http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz
 
[root@host- test -huanqiu src] # tar -zxvf mysql-5.6.34.tar.gz
[root@host- test -huanqiu src] # cd mysql-5.6.34/
[root@host- test -huanqiu mysql-5.6.34] # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
[root@host- test -huanqiu mysql-5.6.34] # make && make install

5、配置MySQL

1
2
3
4
5
6
7
8
修改 /usr/local/mysql 权限
[root@host- test -huanqiu mysql-5.6.34] # mkdir -p /data/mysql/data
[root@host- test -huanqiu mysql-5.6.34] # chown -R mysql:mysql /usr/local/mysql
[root@host- test -huanqiu mysql-5.6.34] # chown -R mysql:mysql /data/mysql/data
 
执行初始化配置脚本,创建系统自带的数据库和表
[root@host- test -huanqiu mysql-5.6.34] # cd /usr/local/mysql
[root@host- test -huanqiu mysql] # ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql   //如果后续不小心删除了这个数据目录或这个目录下的文件被误操作删除了,还可以利用这个命令重新初始化

需要特别注意:
在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!

另外:
在CentOS 6.4版操作系统最小安装完成后,默认会在/etc目录下存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。
--------------------------------------------------------------------------------------------------------------------------------------------------------------

启动MySQL
添加服务,拷贝服务脚本到init.d目录,并设置开机启动
[root@host-test-huanqiu mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@host-test-huanqiu mysql]# chkconfig mysql on
[root@host-test-huanqiu mysql]# service mysql start   //启动前,要先配置my.cnf文件(如下), 并确保/data/mysql/data和/usr/local/mysql的mysql权限

1
2
3
4
5
6
7
8
9
10
11
如果启动报错:
[root@slave-server mysql] # service mysql start
Starting MySQL.Logging to  '/data/mysql/data/mysql-error.log' .
170416 12:55:28 mysqld_safe Directory  '/usr/local/mysql/var'  for  UNIX socket  file  don't exists.
  ERROR! The server quit without updating PID  file  ( /data/mysql/data/mysql .pid).
 
解决办法:
[root@slave-server mysql] # mkdir /usr/local/mysql/var
[root@slave-server mysql] # chown -R mysql:mysql /usr/local/mysql
[root@slave-server mysql] # service mysql start
Starting MySQL.. SUCCESS!

配置用户和环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MySQL启动成功后,root默认没有密码,需要设置root密码,设置之前,需要先设置PATH,否则不能直接调用mysql
修改 /etc/profile 文件,在文件末尾添加
[root@host- test -huanqiu mysql] # vim /etc/profile
........
export  PATH=$PATH: /usr/local/mysql/bin
[root@host- test -huanqiu mysql] # source /etc/profile
 
到此,就可以直接mysql登陆了
[root@host- test -huanqiu mysql] # mysql -uroot
.......
mysql>  select  version();
+-----------+
| version() |
+-----------+
| 5.6.33 |
+-----------+
1 row  in  set  (0.00 sec)

登陆mysql,若是报错如下:

1
2
3
4
5
6
[root@test2-235 mysql] # mysql
ERROR 2002 (HY000): Can 't connect to local MySQL server through socket ' /var/lib/mysql/mysql .sock' (2)
 
解决办法
[root@test2-235 mysql] # mkdir /var/lib/mysql/
[root@test2-235 mysql] # ln -s /usr/local/mysql/var/mysql.sock /var/lib/mysql/mysql.sock

修改root密码,执行命令如下

1
2
3
4
5
6
7
8
9
10
mysql> SET PASSWORD = PASSWORD( '123456' );
 
若要设置root用户可以远程访问,执行
mysql> GRANT ALL PRIVILEGES ON *.* TO  'root' @ '%'  IDENTIFIED BY  'password'  WITH GRANT OPTION;
使授权立即生效
mysql> FLUSH PRIVILEGES;
 
也可以使用mysqladmin命令设置mysql密码
[root@host- test -huanqiu mysql] # mysqladmin password 123456 #安装mysql后第一次设置密码
[root@host- test -huanqiu mysql] # mysqladmin -p 旧密码 password 新密码 #重置密码

最后配置防火墙

1
2
3
4
默认防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口.也可以做下白名单,比如只允许192.168.1.0 /24 网段的客户机访问本机的mysql。
[root@host- test -huanqiu mysql] # vim /etc/sysconfig/iptables
.......
-A INPUT -s 192.168.1.0 /24  -p tcp -m tcp -m state --state NEW -dport 3306 -j ACCEPT

----------------------------------------------------------------------------------------------------------------------------------
下面贴下mysql6.x的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
[client]
port = 3306
socket =  /usr/local/mysql/var/mysql .sock
 
[mysqld]
port = 3306
socket =  /usr/local/mysql/var/mysql .sock
 
basedir =  /usr/local/mysql/
datadir =  /data/mysql/data
pid- file  /data/mysql/data/mysql .pid
user = mysql
bind-address = 0.0.0.0
server- id  = 1
sync_binlog=1
log_bin = mysql-bin
 
skip-name-resolve
 
back_log = 600
 
max_connections = 3000
max_connect_errors = 3000
 
table_open_cache = 512
max_allowed_packet = 16M
binlog_cache_size = 16M
max_heap_table_size = 16M
tmp_table_size = 256M
 
read_buffer_size = 1024M
read_rnd_buffer_size = 1024M
sort_buffer_size = 1024M
join_buffer_size = 1024M
key_buffer_size = 8192M
 
thread_cache_size = 8
 
query_cache_size = 512M
query_cache_limit = 1024M
 
ft_min_word_len = 4
 
binlog_format = mixed
expire_logs_days = 30
 
log_error =  /data/mysql/data/mysql-error .log
slow_query_log = 1
long_query_time = 1
slow_query_log_file =  /data/mysql/data/mysql-slow .log
 
performance_schema = 0
explicit_defaults_for_timestamp
 
skip-external-locking
 
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 4096M          #这个参数一般设置为服务器最大内存的60%
innodb_write_io_threads = 1000
innodb_read_io_threads = 1000
innodb_thread_concurrency = 8
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 4M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
 
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 2G
myisam_repair_threads = 1
 
interactive_timeout = 28800
wait_timeout = 28800
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port = 3306

针对上面的部署过程,为了便于以后安装mysql环境,编写了下面的安装脚本,直接运行这个脚本就能自动化构建mysql环境了。
[root@slave-server ~]# cat mysql.sh                    (下载地址:https://pan.baidu.com/s/1gfEKC9d    密码:6ec3)

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
#!/bin/bash
#卸载系统自带的Mysql
/bin/rpm  -e $( /bin/rpm  -qa |  grep  mysql| xargs ) --nodeps
/bin/rm  -f  /etc/my .cnf
  
#安装编译代码需要的包
/usr/bin/yum  -y  install  make  gcc -c++ cmake bison-devel ncurses-devel
  
#编译安装mysql5.6
/usr/sbin/groupadd  mysql
/usr/sbin/useradd  -g mysql mysql -M -s  /sbin/nologin
  
cd  /usr/local/src
wget -c http: //ftp .ntu.edu.tw /MySQL/Downloads/MySQL-5 .6 /mysql-5 .6.37. tar .gz
/bin/tar  -zxvf mysql-5.6.37. tar .gz
cd  mysql-5.6.37/
/usr/bin/cmake  -DCMAKE_INSTALL_PREFIX= /usr/local/mysql  -DMYSQL_DATADIR= /data/mysql/data  -DSYSCONFDIR= /etc  -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR= /var/lib/mysql/mysql .sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make  &&  make  install
  
#修改/usr/local/mysql权限
mkdir  -p  /data/mysql/data
/bin/chown  -R mysql:mysql  /usr/local/mysql
/bin/chown  -R mysql:mysql  /data/mysql/data
  
#执行初始化配置脚本,创建系统自带的数据库和表
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /data/mysql/data  --user=mysql
  
#配置my.cnf
cat  /usr/local/mysql/my .cnf << EOF
[client]
port = 3306
socket =  /usr/local/mysql/var/mysql .sock
  
[mysqld]
port = 3306
socket =  /usr/local/mysql/var/mysql .sock
  
basedir =  /usr/local/mysql/
datadir =  /data/mysql/data
pid- file  /data/mysql/data/mysql .pid
user = mysql
bind-address = 0.0.0.0
server- id  = 1
sync_binlog=1
log_bin = mysql-bin
  
skip-name-resolve
#skip-networking
back_log = 600
  
max_connections = 3000
max_connect_errors = 3000
##open_files_limit = 65535
table_open_cache = 512
max_allowed_packet = 16M
binlog_cache_size = 16M
max_heap_table_size = 16M
tmp_table_size = 256M
  
read_buffer_size = 1024M
read_rnd_buffer_size = 1024M
sort_buffer_size = 1024M
join_buffer_size = 1024M
key_buffer_size = 8192M
  
thread_cache_size = 8
  
query_cache_size = 512M
query_cache_limit = 1024M
  
ft_min_word_len = 4
  
binlog_format = mixed
expire_logs_days = 30
  
log_error =  /data/mysql/data/mysql-error .log
slow_query_log = 1
long_query_time = 1
slow_query_log_file =  /data/mysql/data/mysql-slow .log
  
performance_schema = 0
explicit_defaults_for_timestamp
  
##lower_case_table_names = 1
  
skip-external-locking
  
default_storage_engine = InnoDB
##default-storage-engine = MyISAM
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 4096M
innodb_write_io_threads = 1000
innodb_read_io_threads = 1000
innodb_thread_concurrency = 8
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 4M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
  
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 2G
myisam_repair_threads = 1
  
interactive_timeout = 28800
wait_timeout = 28800
  
[mysqldump]
quick
max_allowed_packet = 16M
  
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
port = 3306
EOF
  
#启动mysql服务
cd  /usr/local/mysql
/bin/mkdir  var
/bin/chown  -R mysql.mysql var
cp  support-files /mysql .server  /etc/init .d /mysql
/sbin/chkconfig  mysql on
service mysql start
  
#设置环境变量
echo  "export PATH=$PATH:/usr/local/mysql/bin"  >>  /etc/profile
source  /etc/profile
  
#设置mysql登陆密码,初始密码为123456
/bin/mkdir  -p  /var/lib/mysql
ln  -s  /usr/local/mysql/var/mysql .sock  /var/lib/mysql/mysql .sock
mysql -e  "SET PASSWORD = PASSWORD('123456');"
mysql -p123456 -e  "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;"
mysql -p123456 -e  "FLUSH PRIVILEGES;"
***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
分类:  Mysql
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/6109679.html ,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
12月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
2660 16
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
879 10
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
902 17
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
3526 26
|
12月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
662 158
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
12月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1762 152
|
12月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1191 156
|
12月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
781 156