编译法安装MySQL数据库:
一、准备安装介质与依赖包
执行yum安装相关所需要的包:
yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
下载MySQL源码包安装介质:
选择对应的版本和介质类型,MySQL源码包和RPM包不同,一般只有20M-30M 左右。
具体版本可根据需要进行下载,一般 5.6.1.6 版本稳定性较好。
二、创建MySQL用户和组
创建操作系统层的MySql专用账户和用户组,均命名为MySql:
# id mysql
# userdel mysql
# groupdel mysql
# groupadd mysql
# useradd -g mysql mysql
设置系统资源限制,命令如下:
# vi /etc/security/limits.conf
在文件最后加入如下内容:
mysql
soft
nproc
2047
mysql
hard
nproc
16384
mysql
soft
nofile
1024
mysql
hard
nofile
65536
输入 :wq ,保存并退出。
三、编译安装MySQL软件
执行tar命令解压MySql源码包,并进入解压缩目录中:
ftp mysql-5.6.12.tar.gz
# tar -zxvf mysql-5.6.12.tar.gz
# cd mysql_5.6.12
执行cmak命令,生成编译配置文件:
**主机目录,需确认或修改
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DCOMPILATION_COMMENT='Zhaofx for mysqltest' \
-DWITH_READLINE=ON \
-DSYSCONFDIR=/data/mysqldata/3306 \
-DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock
cmake执行成功的话,则最后输出结果类似:
...............
-- Configurating done
-- Generation done
-- Build files have been written to: /data/software/mysql-5.6.12
接下来执行编译和安装,这一步依赖机器性能,可能耗时较长:
# make && make install
修改MySQL文件所在目录拥有者weMySQL用户,命令为:
# chown -R mysql:mysql /usr/local/mysql
修改MySQL用户的环境变量,编译.bash_profile文件:
# vi /home/mysql/.bash_profile
在该文件的最后增加两行:
export LANG=zh_CN.GB18030
export PATH=/usr/local/mysql/bin:$PATH
这样就可以再任意路径下使用MySQL命令,且指定操作系统字符集,修正无法输入中文的问题。
四、准备目录、my.cnf文件,创建MySQL数据库
首先为MySQL创建的数据库做准备性工作,由于之前数据文件默认指定的目录为/data/mysqldata/3306 ,因此我们就要将相应的目录都创建好,执行操作如下:
# cd /data/
# mkdir -p /data/mysqldata/{3306/{data,tmp,binlog},backup,scripts}
# chown -R mysql:mysql mysqldata
# su - mysql
$ cd /usr/local/mysql
注:MySQL建库的目录,可根据需要进行修改
手工创建my.cnf的命令为:
$ touch /data/mysqldata/3306/my.cnf
编辑该文件:
$ vi /data/mysqldata/3306/my.cnf
添加下列参数:
[client]
port = 3306
socket = /data/mysqldata/3306/mysql.sock
# The MySQL server
[mysqld]
port
= 3306
user
= mysql
socket
= /data/mysqldata/3306/mysql.sock
pid-file
= /data/mysqldata/3306/mysql.pid
basedir
= /usr/local/mysql
datadir
= /data/mysqldata/3306/data
tmpdir
= /data/mysqldata/3306/tmp
open_files_limit
=
10240
explicit_defaults_for_timestamp
sql_mode
= NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# Buffer
max_allowed_packet
= 256M
max_heap_table_size
= 256M
net_buffer_length
= 8K
sort_buffer_size
= 2M
join_buffer_size
= 4M
read_buffer_size
= 2M
read_rnd_buffer_size
= 16M
# Log
log-bin
= /data/mysqldata/3306/binlog/mysql-bin
binlog_cache_size
= 32M
max_binlog_cache_size
= 512M
max_binlog_size
=
512M
binlog_format
= mixed
log_output
= FILE
log-error
= ../slow_error.log
slow_query_log
= 1
slow_query_log_file
= ../slow_query.log
general_log
= 0
general_log_file
= ../general_query.log
expire-logs-days
= 14
# InnoDB
innodb_data_file_path
= ibdata1:2048M:autoextend
innodb_log_file_size
= 256M
innodb_log_files_in_group
= 3
innodb_buffer_pool_size
=1024M
[mysql]
no-auto-rehash
prompt
= (\u@\h) [\d]>\_
default-character-set
= gbk
注:具体路径可以根据实际情况,进行修改,保存并退出。
接下来最重要的一步,初始化MySQL数据库。MySQL提供了相应的命令mysql_install_db,位于MySQL软件安装的scripts目录内,直接执行即可:
$ /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysqldata/3306/data --
basedir=/usr/local/mysql
注意:该处可能有错误,之前执行多次,均不能成功。
对于不同小版本的MySQL数据库,在参数和一些小的设置上都可以有问题,要区分对待,否则会造成MySQL无法启动。
五、启动数据库服务,进行初始修改
linux下建议使用 mysqld_safe 命令行方式启动MySQL服务:
$ mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
MySQL提示可以使用mysqladmin命令修改用户的密码,但一般建议直接到数据库中操作用户字典表:
$ mysql
msql> select user,host from mysql.user;
默认6条记录,有6个账户,其中2个用户名为空的记录,这是可以直接进入的原因。
出于安全和易管理的考虑,删除除root从本地连接外的其他所有记录,命令如下:
msyql> delete from mysql.user where (user,host) not in (select 'root','localhost');
修改root用户的用户名和密码:
mysql> update mysql.user set user='system',password=password('123456');
由于还存在test库查询mysql.db表内容的安全隐患,直接删除:
mysql> truncate table mysql.db;
mysql> flush privileges;
验证登录:
mysql> exit
$ mysql
会出现 ERROR 1045(28000)访问被拒绝(使用密码)的提示,使用下面的命令连接:
$ mysql -u system -p
$ mysql -u jjh -p -S /data/mysqldata/3307/mysql.scok
创建应用所需的数据库和用户:
mysql> create database jiradb character set utf8;
Query OK, 1 row affected (0.03 sec)
mysql> grant all privileges on jiradb.* to jirauser@'%' identified by '123456' with grant option;
Query OK, 0 rows affected (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
六、配置MySQL管理脚本,方便管理
配置MySQL管理脚本:
脚本1:创建中间定义文件,提高脚本复用性:
$ vi /data/mysqldata/scripts/mysql_env.ini
增加下列内容:
# set env
MYSQL_USER=system
MYSQL_PASS='123456'
# check parameter
if [ $# -ne 1 ]
then
HOST_PORT=3306
else
HOST_PORT=$1
fi
修改该文件在操作系统的权限:
$ chmod 600 /data/mysqldata/scriptes/mysql_env.ini
脚本2:创建 mysql_db_startup.sh 脚本,用于启动MySQL服务;
$ vi /data/mysqldata/scripts/mysql_db_startup.sh
增加下列内容:
#!/bin/sh
# Create by zhaofx 20140620
source /data/mysqldata/scripts/mysql_env.ini
echo "Startup MySQl Service:localhost_"${HOST_PORT}
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/${HOST_PORT}/my.cnf &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
脚本3:创建 mysql_db_shutdown.sh 脚本,用于关闭MySQL服务:
$ vi /data/mysqldata/scripts/mysql_db_shutdown.sh
增加下列内容:
#!/bin/sh
# Create by zhaofx 20140620
source /data/mysqldata/scripts/mysql_env.ini
echo "Shutdown MySQL Service: localhost_"${HOST_PORT}
/usr/local/mysql/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PASS} -S /data/mysqldata/
${HOST_PORT}/mysql.sock shutdown
示例: /usr/local/mysql/bin/mysqladmin -uroot
-p'123456' -S /data/mysqldata/3307/mysql.sock shutdown
注:单独关闭MySQL服务可以用类似的命令 mysqladmin -u root -p shutdown
脚本4:创建mysqlplus.sh脚本,用于快速登录:
$ vi /data/mysqld/scripts/mysqlplus.sh
增加如下内容:
#!/bin/sh
# Create by zhaofx 20140620
source /data/mysqldata/scripts/mysql_env.ini
echo "Login MySQL Srevice: lcoalhost_"${HOST_PORT}
/usr/local/mysql/bin/mysql -u${MYSQL_USER} -p${MYSQL_PASS} -S /data/mysqldata/${HOST_PORT}/mysql.sock $2
授予上面几个脚本的执行权限,以方便调用:
$ chmod +x /data/mysqldata/scripts/*.sh
编辑MySQL用户的环境变量,将上述路径加入到path中,执行命令:
$ echo "export PATH=/data/mysqldata/scripts:\$PATH" >> ~/.bash_profile
$ source ~/.bash_profile
之后,本地连接MySQL服务,就可以直接执行mysqlplus脚本,省去输入用户名密码等参数:
$ mysqlplus.sh
即使当前服务器中有多个MySQL实例,分别绑定在不同的端口上,也可以执行mysqlplus时指定对应端口即可,如果没有指定,默认连接3306端口。此外可以尝试执行两个两个脚本来停止或启动MySQL服务。
七、配置MySQL开机自动启动
若希望MySQL服务能够开机自动启动,最简单的方式,就是将启动脚本加入到启动脚本文件中就可以了。
编辑/etc/rc.local 文件,需要root用户执行:
# vi /etc/rc.local
增加下列内容到最后一行:
# atuostart myql , add by zhaofx at 20140620
sudo -i -u mysql /data/mysqldata/scripts/mysql_db_startup.sh 3306 > /home/mysql/mysql_db_startup.log 2>&1
注意:执行sudo命令是可能遇到如下错误:
sudo:sorry,you must have a try to run sudo
遇到这种情况,可以通过修改sudo的配置来避免错误的发生,比如执行vissudo命令,或者用文本编辑工具打开/etc/sudoers文件,注释掉第56行,如下:
#Defaults requirety
保存后退出,再次执行就一切正常了。
源码安装mysql启动失败怎么回事 源码安装的步骤
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL5.7.36安装-二进制(源码)版本
MySQL5.7.36安装-二进制(源码)版本
mysql MySQL sed -
docker 启动 mysql:8.0.27 失败
docker 启动 mysql:8.0.27 失败
docker MySQL8.0.27