二、安装mysql
一般分为以下几种安装方式:
yum
rpm包
常规编译安装
cmake安装
二进制包安装
如何使用:
- 个人使用yum或rpm包安装
- 企业多使用常规编译和查马克及二进制包安装方式
centos的yum源安装的mysql版本太老,这里用编译安装mysql
1.安装编译代码需要的包
1 | yum -y install make gcc-c++ cmake bison-devel ncurses-deve |
2.下载mysql
1 2 3 4 | 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.安装
1 | make && make install |
会出现以下错误,阿里云centos主机512M内存的, 会在make编译到45%时会报错, 这是内存不足所致。
1 2 3 4 5 6 | 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交换分区
1 2 3 4 5 | 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...
1 | [100%]Built target my_safe_process #此处make完成 |
1 2 3 4 | -- 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用户
1 2 | groupadd mysql useradd -r -g mysql mysql |
useradd -r参数表示mysql用户是系统用户,不可用于登录系统。
useradd -g参数表示把mysql用户添加到mysql用户组中。
修改/usr/local/mysql权限
创建data目录
1 | mkdir /usr/local/mysql/data |
修改当前目录的所有者为mysql用户
1 | 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之前版本初始化配置表命令:
1 | script /mysql_install_db --user=mysql --basedir= /usr/local/mysql --datadir= /usr/local/mysql/data |
–user 启动mysql的用户
–basedir mysql安装目录
–datadir mysql数据仓库目录
========================================================================================================================
现在mysql5.7的命令
1 2 | cd /usr/local/mysql bin /mysqld --initialize --user=mysql --basedir= /usr/local/mysql --datadir= /usr/local/mysql/data |
可以看到如下内容
1 2 3 4 5 6 7 | [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/目录下所有文件的所有者。
1 2 3 | cd /usr/local/mysql chown -R root:root ./ chown -R mysql:mysql . /data |
修改/etc/my.cnf
1 2 3 4 5 6 7 8 9 | [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
创建目录
1 2 | mkdir -p /var/lib/mysql/ chown -R mysql:mysql /var/lib/mysql |
设置开机启动
1 2 3 | cd /usr/local/mysql/support-files/ cp mysql.server /etc/init .d /mysql chmod +x /etc/init .d /mysql |
把mysql注册为开机启动的服务
1 | chkconfig --add mysql |
查看是否添加成功
1 2 | [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补全
1 2 | basedir= '/usr/local/mysql' datadir= '/usr/local/mysql/data' |
启动mysql
1 | 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,备注博客