Mysql 数据库
是一种关系型数据库管理软件,关系型数据库特点是将数据库保存在不同的二维表(Excel)中,并且将这些表放入不同的数据库中,而不是把所有数据统一放在一个大仓库里,这样的设计增加了Mysql的读取速度,灵活性和可管理性也得到了很大提高。访问及管理Mysql数据库的最常用标准化语言为SQL结构化查询语言。
源码安装mysql,其中两个版本对编译环境有要求
1. mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器。
2. mysql从8.0.16版本开始,要求cmake的版本是cmake3以上
3. centos7.6默认安装的是cmake2.8.12.2和gcc4.8.5,这是为考虑向下兼容centos6.2及稳定性,但对编辑安装mysql8.0.16会形成阻碍,所以安装前建议升级cmake到cmake3以上.
环境设置
1.关闭selinux
vi /etc/selinux/config
//修改为
SELINUX=disabled
2.通过 rpm -qa | grep mariadb 命令查看 mariadb 的安装包
3.通过 rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 –nodeps 命令卸载mariadb
4.通过 rpm -qa | grep mariadb 命令再次查看 mariadb 的安装包
安装源码准备
gmp-6.1.2.tar.xz,mpfr-4.0.2.tar.gz,mpc-1.1.0.tar.gz,gcc-9.2.0.tar.gz,cmake-3.15.2.tar.gz,mysql-boost-8.0.18.tar.gz,
源码下载
编译安装GCC9.2
安装依赖
yum -y install epel-release
yum -y group install "Development Tools"
MYsql依赖:
yum -y install ncurses-devel openssl openssl-devel bison
2. 安装gcc源码编译依赖 ,先编译gmp->mpfr->mpc,编译: gmp-6.1.2
cd /usr/local/src/
tar -xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp-6.1.2
make -j $(nproc)
make install
cd ../
3. 编译:mpfr-4.0.2
tar -xvf mpfr-4.0.2.tar.gz
cd mpfr-4.0.2
./configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2
make -j $(nproc)
make install
cd ../
4.编译:mpc-1.1.0
tar -xvf mpc-1.1.0.tar.gz
cd mpc-1.1.0
./configure --prefix=/usr/local/mpc-1.1.0 --with-mpfr=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2
make -j $(nproc)
make install
# 把mpfr lib 加入 ld.so.conf 不然gcc 编译报错
echo /usr/local/mpfr-4.0.2/lib >> /etc/ld.so.conf
ldconfig
5. 编译安装gcc
cd /usr/local/src/
tar -xvf gcc-9.2.0.tar.gz
cd gcc-9.2.0
./configure --prefix=/usr/local/gcc-9.2.0 \
-enable-threads=posix \
-disable-checking \
-disable-multilib \
-enable-languages=c,c++ \
--with-gmp=/usr/local/gmp-6.1.2 \
--with-mpfr=/usr/local/mpfr-4.0.2 \
--with-mpc=/usr/local/mpc-1.1.0 \
--with-tune=generic \
--with-arch_32=x86-64
make -j $(nproc)
make install -j $(nproc)
###备份旧 gcc 可执行文件
mv /usr/bin/gcc /usr/bin/gcc.old
mv /usr/bin/g++ /usr/bin/g++.old
mv /usr/bin/c++ /usr/bin/c++.old
mv /usr/bin/cpp /usr/bin/cpp.old
mv /usr/bin/gcov /usr/bin/gcov.old
### 创建最新gcc 执行文件软链
ln -sf /usr/local/gcc-9.2.0/bin/* /usr/bin/
### 删除lib64 目录下.py 文件不然ldconfig 报错
rm -rf /usr/local/gcc-9.2.0/lib64/libstdc++.so.6.0.27-gdb.py
echo /usr/local/gcc-9.2.0/lib64 >> /etc/ld.so.conf
ldconfig
### 复制libstdc++.so.6.0.27 /lib64/
cp /usr/local/gcc-9.2.0/lib64/libstdc++.so.6.0.27 /lib64/
###创建软链 libstdc++.so.6
cd /lib64
ln -sf libstdc++.so.6.0.27 libstdc++.so.6
### 查看是否最新版本
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
编译安装cmake3.15.2
cd /usr/local/src
tar zxf cmake-3.15.2.tar.gz
cd cmake-3.15.2
./configure --prefix=/usr/local/cmake
make
make install
–prefix 参数是配置cmake的安装目录
做cmake命令软连接,查看cmake版本
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
cmake --version
编译安装mysql8.0.18
1.目录设置
mkdir /usr/local/mysql/{data,tmp,logs} -p
mkdir -p /usr/local/mysql/logs/{mysqld,backup_mysqld}
2. 创建mysql用户,授权
useradd mysql -s /sbin/nologin -M
chown -R mysql:mysql /usr/local
3.进入 /usr/local/src 目录
cd /usr/local/src
4. mysql官网下载mysql-8.0.18,上传MySQL-8.0.18并解压
rz -ary --o-sync
tar -zxvf mysql-boost-8.0.18.tar.gz
yum -y install cmake3
cd mysql-8.0.18
5. 上传boost_1_70_0.tar.gz 到/root/mysql-8.0.18/boost/boost_1_70_0目录或者自动下载
6. 编译安装
cmake3 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNODB_MEMCACHED=ON \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/mysql-8.0.18/boost/boost_1_70_0 \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITHOUT_CSV_STORAGE_ENGINE=1 \
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1 \
-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1 \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_DEBUG=1 \
-DCMAKE_CXX_COMPILER=/usr/local/gcc-9.2.0/bin/g++ \
-DCMAKE_C_COMPILER=/usr/local/gcc-9.2.0/bin/gcc
make
make install
编译参数描述
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL安装的根目录
-DMYSQL_DATADIR=/data/mysql:数据文件所存放的目录
-DSYSCONFDIR=/etc :MySQL配置文件所在目录
-DMYSQL_USER=mysql:MySQL服务的用户名
-DWITH_MYISAM_STORAGE_ENGINE=1:安装MyISAM引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1:安装InnoDB引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1:安装Archive引擎
-DWITH_MEMORY_STORAGE_ENGINE=1:安装Memory引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1:安装Federated引擎
-DWITH_PARTITION_STORAGE_ENGINE=1:安装Partition引擎
-DWITH_READLINE=1:MySQL的readline library
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock:sock文件的路径
-DMYSQL_TCP_PORT=3306 :MySQL的监听端口
-DENABLED_LOCAL_INFILE=1:启用加载本地数据
-DENABLE_DOWNLOADS=1:编译时允许自主下载相关文件
-DEXTRA_CHARSETS=all :使MySQL支持所有的扩展字符
-DDEFAULT_CHARSET=utf8mb4:设置默认字符集为utf8mb4
-DDEFAULT_COLLATION=utf8mb4_general_ci:设置默认字符校对
-DWITH_DEBUG=0:禁用调试模式
-DMYSQL_MAINTAINER_MODE=0:是否启用mysql维护器特定的开发环境
-DDOWNLOAD_BOOST=1:允许在线更新boost库
-DWITH_BOOST=../boost:指定boost安装路径
提示错误1:
cmake问题CMake Error:Could not find CMAKE_ROOT!!!core dumped的问题,只要一条命令就可以解决:hash -r
再运行cmake –version即可显示cmake版本信息
提示错误2:
Mysql问题Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)1、在根目录输命令find / -name CMakeCache.txt
2、删除mysql下的CMakeCache.txt
3、缺少ncurses-devel包,yum install -y ncurses-devel
提示错误3:
collect2: 错误:ld 返回 1删除mysql下的CMakeCache.txt
7.拷贝到启动脚本并添加执行权限
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
8.mysql环境变量配置
export PATH=$PATH:/usr/local/mysql/bin:
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
10. 使环境变量生效
source /etc/profile
11.初始化&启动数据库
#编辑配置文件
vi /data/conf/my.cnf
#建立软链接
ln -s /data/conf/my.cnf /etc/my.cnf
#初始化数据库
mysqld --defaults-file=/etc/my.cnf --initialize-insecure &
#启动数据库
/etc/init.d/mysqld start
#登陆后修改密码
mysql
alter user root@localhost identified by 'xxx';