lnmp环境搭建--mysql编译安装

加油吧!Davidvivi

二、安装mysql 

一般分为以下几种安装方式:


yum

rpm包

常规编译安装

cmake安装

二进制包安装

如何使用: 

- 个人使用yum或rpm包安装 

- 企业多使用常规编译和查马克及二进制包安装方式


centos的yum源安装的mysql版本太老,这里用编译安装mysql



1.安装编译代码需要的包

yum -y install make gcc-c++ cmake bison-devel ncurses-deve


2.下载mysql


cd /usr/local/
1 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19.tar.gz
2 tar -zxvf mysql-5.7.19.tar.gz 
3 cd mysql-5.7.19


3.编译


cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/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 \

-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost


注意最后一行配置,是下载boost包的,如果没有boost包,编译会报错:



4.安装

make && make install


会出现以下错误,阿里云centos主机512M内存的, 会在make编译到45%时会报错, 这是内存不足所致。


c++: Internal error: Killed (program cc1plus)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
make: *** [all] Error 2

解决方法: 

出错后重新运行配置,需要删除CMakeCache.txt文件


# make clean 

# rm -f CMakeCache.txt 


设置2G交换分区


dd if=/dev/zero of=/swapfile bs=1k count=2048000 --获取要增加的2G的SWAP文件块
# mkswap /swapfile     -- 创建SWAP文件
# swapon /swapfile     -- 激活SWAP文件
# swapon -s            -- 查看SWAP信息是否正确
# echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab -- -- 添加到fstab文件中让系统引导时自动启动


注意, swapfile文件的路径在/var/下


重新使用cmake -DCMAKE_INSTALL_PREFIX...

[100%]Built target my_safe_process #此处make完成



-- Installing: /usr/local/mysql/share/aclocal/mysql.m4
-- Installing: /usr/local/mysql/support-files/mysql.server
[root@iZwz96pb4qob9lpzadqipkZ mysql-5.7.19]# 
# 此处make install完成


编译完后, 如果不想要交换分区了, 可以删除:


# swapoff /swapfile

# rm -fr /swapfile



创建mysql组和mysql用户

groupadd mysql
useradd -r -g mysql mysql


useradd -r参数表示mysql用户是系统用户,不可用于登录系统。 

useradd -g参数表示把mysql用户添加到mysql用户组中。 

修改/usr/local/mysql权限


创建data目录

mkdir /usr/local/mysql/data


修改当前目录的所有者为mysql用户

chown -R mysql:mysql /usr/local/mysql


初始化配置:

======================================================================================================================== 

mysql5.7和之前版本不同,很多资料上都是这个命令:../scripts/mysql_install_db –user=mysql,而mysql5.7的mysql_install_db命令是在bin目录下 的并且建议 用 mysqld –initialize命令 

mysql5.7之前版本初始化配置表命令:

script/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

–user 启动mysql的用户 

–basedir mysql安装目录 

–datadir mysql数据仓库目录

========================================================================================================================



现在mysql5.7的命令

cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data


可以看到如下内容

[root@iZwz96pb4qob9lpzadqipkZ mysql]# ./bin/mysqld --initialize  --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/
2017-08-26T10:00:22.235755Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-04-26T10:00:24.305929Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-04-26T10:00:24.520554Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-04-26T10:00:24.630442Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 61349e3b-8a45-11e7-929c-00163e04e9fa.
2016-04-26T10:00:24.633411Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-04-26T10:00:24.633981Z 1 [Note] A temporary password is generated for root@localhost: ***s****2k)


重要: 

注意最后一行,这也是和之有版本不同的地方,它给了root一个初始密码,后面要登录的时候要用到这个密码。***s****2k)


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

cd /usr/local/mysql
chown -R root:root ./ 
chown -R mysql:mysql ./data


修改/etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


修改为datadir=/usr/local/mysql/data



创建目录

mkdir -p /var/lib/mysql/ 
chown -R mysql:mysql /var/lib/mysql


设置开机启动

cd /usr/local/mysql/support-files/
cp mysql.server  /etc/init.d/mysql
chmod +x /etc/init.d/mysql




把mysql注册为开机启动的服务

chkconfig --add mysql


查看是否添加成功

[root@iZwz96pb4qob9lpzadqipkZ init.d]# chkconfig --list mysql
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off


修改启动脚本vim /etc/init.d/mysql ,将basedir和datadir补全

basedir='/usr/local/mysql'
datadir='/usr/local/mysql/data'


启动mysql

service mysql start


修改MySQL密码

vi /etc/my.cnf 在[mysqld]下添加一行 skip-grant-tables


service mysql restart


mysql #现在可以免密码登陆


update mysql.user set authentication_string=password('test') where user='root' and Host = 'localhost';#特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段


flush privileges;


quit;




















打赏,支持一下

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by WEIXIA.XIN,学的不仅是技术,更是梦想!!!

Davidvivi博客
请先登录后发表评论
  • 最新评论
  • 总共 0条评论