mysql之mysql的安装

Wesley13
• 阅读 618

此次MySQL安装的版本为:MySQL8.0

系统为:centos6.9 64位

一、利用yum仓库安装

wget https://repo.mysql.com//mysql80-community-release-el6-1.noarch.rpm 下载仓库文件的rpm包

rpm -ihv mysql80-community-release-el6-1.noarch.rpm   安装yum仓库包

yum install mysql-community-server -y  用yum安装

初始化:

service mysqld start

grep 'temporary password' /var/log/mysqld.log   查看初始密码

alter user 'root'@'localhost' identified by 'MySQLtest123'; 修改初始密码

二、编译安装

rpm包安装没有什么难度,只要去官网下载rpm包,就可以了。

之所以要用编译安装,主要是为了隐藏版本号。因为各种中间件或多或少都是有一些漏洞的,黑客可以通过扫描你中间件的版本号从而有针对的攻击你的系统

比如用telnet ip 3306,就能看到mysql的版本信息,为了隐藏版本信息,最好还是使用编译安装。

安装前的准备:

yum install -y autoconf automake m4 libtool make cmake bison gcc ncurses-devel libaio glibc-devel.i686 glibc-devel gcc-c++       安装依赖包

编译安装gcc

MySQL8.0编译安装需要用gcc的版本为 4.8.3以上,如果是centos6,需要编译安装更高版本的gcc,如果是centos7 可以略过这一步:

gcc全版本下载地址:http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/

我这里是编译安装的gcc-6.1.0

wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-6.1.0/gcc-6.1.0.tar.gz

tar xf gcc-6.1.0.tar.gz

cd  gcc-6.1.0

# 载编译需要的依赖包:./contrib/download_prerequisites

./configure --prefix=/usr/local/gcc-6.1.0/   --enable-bootstrap --enable-threads=posix --enable-languages=c,c++,objc,obj-c++

make &&make install

用先新安装的高版本gcc替换之前的gcc环境:

ln -s /usr/local/gcc-6.1.0/bin/gcc /usr/bin/gcc

ln -s /usr/local/gcc-6.1.0/bin/g++ /usr/bin/g++

ln -s /usr/local/gcc-6.1.0/bin/c++ /usr/bin/c++

ln -s /usr/local/gcc-6.1.0/bin/gcc /usr/bin/cc 将新版本的gcc软连接到/usr/bin下面使系统能够识别 

mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak

ln -s /usr/local/gcc-6.1.0/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6

友情提示:编译gcc耗时非常长

安装boost库:(下载二进制包解压到指定目录即可)

wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost\_1\_66\_0.tar.gz

tar -xf boost_1_66_0.tar.gz

mv boost_1_66_0 /usr/local/boost

编译安装mysql8.0

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13.tar.gz

tar -xf mysql-8.0.13.tar.gz

cd mysql-8.0.13

修改版本信息:

当切换到源码目录之后,其中有一个VERSION文件保存了mysql的版本信息,

执行cmake:

cmake -DWITH_DEBUG=1 \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/var/lib/mysql \

-DWITH_BOOST=/usr/local/boost \

-DSYSCONFDIR=/etc \

-DEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DENABLED_LOCAL_INFILE=1 \

-DEXTRA_CHARSETS=all \

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock

关于cmake:

网上很多教程都是直接贴上cmake操作命令,但是我觉得还是需要理解这些cmake参数到底是什么意思,这样也好方便自己做一些个性化定制。

cmake各项参数意义,请参见:https://blog.csdn.net/sanbingyutuoniao123/article/details/74544634 

执行完cmake之后进行编译安装:make && make install

提供新的服务脚本:

cp support-files/mysql.server /etc/init.d/mysqld

chmod +x  /etc/init.d/mysqld 

创建pid文件目录:

mkdir /var/run/mysqld

chown -R mysql:mysql /var/run/mysqld

将mysql的二进制文件,导入环境变量:

echo export PATH=\$PATH:/usr/local/mysql/bin >> /etc/profile

. /etc/profile 

初始化数据库:

mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql

service mysqld start   启动数据库

grep 'temporary password' /var/log/mysqld.log   查看初始密码

根据初始密码进入数据库并修改root用户的密码:

alter user 'root'@'localhost' identified by 'Mysql^123321$';

至此mysql8.0安装完毕!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这