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;
相关文章
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
854 17
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
3456 26
|
Ubuntu 关系型数据库 MySQL
在Ubuntu系统的Docker上安装MySQL的方法
以上的步骤就是在Ubuntu系统的Docker上安装MySQL的详细方法,希望对你有所帮助!
1471 12
|
11月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
2568 16
|
12月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
821 10
|
关系型数据库 MySQL Java
centos7安装mysql教程及Navicat平替软件
【8月更文挑战第17天】本教程详述CentOS 7上安装MySQL的过程。首先确保移除任何预装的MySQL组件,然后通过wget获取并安装MySQL的YUM源。可以选择安装特定版本如5.7或8.0。安装MySQL服务器后,启动服务并查找初始密码。登录MySQL后应立即更改密码,并可根据需要设置远程访问权限。此外,还推荐使用免费开源的DBeaver作为数据库管理工具,提供了安装步骤以方便管理和操作MySQL数据库。
595 3
|
安全 关系型数据库 MySQL
Linux(CentOS6)安装MySQL5.6
Linux(CentOS 6)系统上安装MySQL 5.6版本的详细步骤,包括准备数据存放目录、创建用户、下载安装包、初始化数据库、配置服务脚本、设置环境变量等操作。
1091 1
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
862 3
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
1633 2

推荐镜像

更多