二、安装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;
本文为Davidvivi原创文章,转载无需和我联系,但请注明来自Davidvivi博客weixia.xin 本人微信:ww646904527,备注博客