阿里云 windows 版本为 mysql 5.7
之后下载 boost库 ()
wget https://jaist.dl.sourceforge.net/project/boost/boost/1.61.0/boost_1_61_0.tar.gz
先后尝试编译安装 boost_1_64_0.tar.gz 及 boost_1_61_0.tar.gz
都在编译过程中出错了
最后安装了 boost_1_64_0 到 /usr/local 目录下 就是分别把头文件拷贝到了 /usr/local/include 把lib 拷贝到了 /usr/local/lib 时间为 Jun 17 17:42
而且之前就己安装了boost 库(通过yum命令安装的 未查什么版本)
sh ./bootstrap.sh 配置
./b2 编译
./b2 install --prefix=/usr/local/ 安装
腾讯云 3.10.0-514.21.1.el7.x86_64 CentOS 7.3 64位
想在 腾讯云使用mysql++ 首先需要安装mysql
mysql源码安装
首先下载 mysql源码 wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.22.zip
wget https://sourceforge.mirrorservice.org/b/bo/boost/boost/1.59.0/boost_1_59_0.tar.gz
或者 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.22.tar.gz
手动下载 wget https://sourceforge.mirrorservice.org/b/bo/boost/boost/1.59.0/boost_1_59_0.tar.gz
这个版本的安装脚本里就是写死的 会去下载 boost_1_59_0.tar.gz ,这里先下载好。
然后解压mysql
cmake 就是配置 makefile 的意思 这里在 参数-DWITH_BOOS 指定 boost_1_59_0.tar.gz 所在的目录
https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.22.tar.gz
mysql 用户及目录规划
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mysql软件目录: /app/mysql/mysql_home
mysql数据目录:/app/mysql/mysql_data
mysql日志目录:/app/mysql/mysql_log
//对目录授权
chown -R mysql.mysql mysql/
解压mysql后进入目录进行配置编译
cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql/mysql_home -DMYSQL_DATADIR=/app/mysql/mysql_data -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/app/mysql-5.7.22/boost -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EMBEDDED_SERVER=1
这时需要引用boost库 脚本中自动会下载 boost 1.59到 解压后根目录下 ./boost目录下 因为被墙 失败
这时手动下载 wget https://sourceforge.mirrorservice.org/b/bo/boost/boost/1.59.0/boost_1_59_0.tar.gz
然后自脚本会自动解压 进行编译配置
然后是 make 编译
报错内存不足
g++: internal compiler error: Killed (program cc1plus)
开启虚拟内存
$dd if=/dev/zero of=/data/swap_add bs=1M count=2048
$mkswap /data/swap_add
$swapon /data/swap_add $swapon -s
make install 安装
新建新的配置文件/etc/my.cnf
[client]
port=3306
socket=/app/mysql/mysql_data/mysql.sock
default-character-set=utf8
[mysqld]
port=3306
user=mysql
socket=/app/mysql/mysql_data/mysql.sock
pid-file=/app/mysql/mysql_data/mysql.pid
basedir=/app/mysql/mysql_home
datadir=/app/mysql/mysql_data
tmpdir=/app/mysql/mysql_tmp
character-set-server=utf8
log_error=/app/mysql/mysql_log/mysql.err
server-id=2
log_bin=/app/mysql/mysql_log/binlog
general_log_file=/app/mysql/mysql_log/general_log
general_log=1
slow_query_log=ON
long_query_time=2
slow_query_log_file=/app/mysql/mysql_data/query_log
log_queries_not_using_indexes=ON
进到bin目录 初始化数据库
./mysqld --initialize-insecure --user=mysql --basedir=/app/mysql/mysql_home --datadir=/app/mysql/mysql_data
安装ssl,可指定文件生成路径,默认为DATA里面
./mysql_ssl_rsa_setup
复制一些 init程序
cp /app/mysql/mysql_home/support-files/mysql.server /etc/init.d/mysqld
执行 /etc/init.d/mysqld start
这时报启动错误 缺少mysql.pid 网上说是因为没有这个文件的权限 重新设置权限
再试 还是报错,然后通过查mysql日志
日志报错说有的表不存在 然后把 mysql_data 里面的东西都删了再用安装数据库脚本执行一下 再试就可以了
./mysql_install_db --user=mysql --basedir=/app/mysql/mysql_home --datadir=/app/mysql/mysql_data
报错说有的表不存在 然后把 mysql_data 里面的东西都删了再用安装数据库脚本执行一下 再试就可以了
./mysql_install_db --user=mysql --basedir=/app/mysql/mysql_home --datadir=/app/mysql/mysql_data
删除 data目录下面的所有东西再试 执行 /etc/init.d/mysqld start
启动成功
然后在安装目录下面用 ./mysql命令报错
原因是之前己通过命令安装 ,虽然卸载了但密码还没清除
先在配置里
[mysqld]
skip-grant-tables 加这句忽略密码验证
修改密码
mysql> use mysql;
mysql> update user set password=password("你的新密码") where user="root";
输入update mysql.user set password=password('root') where user='root'时提示ERROR 1054 (42S22): Unknown column 'password' in 'field list',
原来是mysql数据库下已经没有password这个字段了,password字段改成了
update mysql.user set authentication_string=password('你的新密码') where user='root' ;
ok 成功
mysql前置工具包安装
yum install gcc gcc-c++ libgcc cmake ncurses-devel openssl-devel
mysql 编译时多进程选项
make -j `grep processor /proc/cpuinfo | wc -l` && make install
mysql 安装的几个错误
Starting MySQL./etc/init.d/mysqld:行181: log_failure_msg: 未找到命令
脚本 /etc/init.d/mysqld 缺少函数
添加
function log_failure_msg() {
echo "$@" "[ FAILED ]"
}
function log_success_msg() {
echo "$@" "[ OK ]"
}
function log_warnning_msg() {
echo "$@" "[ Warn ]"
}
log_success_msg()
{
echo " SUCCESS! $@"
}
log_failure_msg()
{
echo " ERROR! $@"
}
log_warnning_msg()
{
echo " Warnning! $@"
}
跳过登陆
vim /etc/my.cnf
[mysqld]
skip-grant-tables
/etc/init.d/mysqld restart
跳过登陆后没权限
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:yes)
grant all privileges on *.* to 'skip-grants user'@'skip-grants host' identified by ".";
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 错误。则执行下 flush privileges
flush privileges;
/etc/init.d/mysqld restart
ps -ef|grep mysqld
kill -9
#列出所有被安装的rpm package
rpm -qa | grep mariadb
#卸载
rpm -e mariadb-libs-5.5.35-3.el7.x86_64
执行报错:
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
错误:没有依赖关系:
libmysqlclient.so.18()(64位)是需要的(安装)postfix-2:2.10.1-6.el7.x86_64。
libmysqlclient.so.18(libmysqlclient_18)(64位)是需要的(安装)postfix-2:2.10.1-6.el7.x86_64。
#强制卸载
rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64
手动安装前置工具包 ,这些具体的再看,有时间再从源码安装一遍
yum install gcc gcc-c++ libgcc cmake ncurses-devel openssl-devel
https://files-cdn.cnblogs.com/files/lishuaicq/ncurses-6.2.tar.gz
http://mirrors.kernel.org/gnu/automake/automake-1.11.4.tar.gz
http://mirror.hust.edu.cn/gnu/libtool/libtool-2.4.6.tar.gz
http://www.zlib.net/fossils/zlib-1.2.5.3.tar.gz
http://ftp.gnu.org/old-gnu/libstdc++/libstdc++-2.8.1.1.tar.gz
http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.gz
http://mirrors.kernel.org/gnu/autoconf/autoconf-2.69.tar.gz
http://mirrors.kernel.org/gnu/automake/automake-1.16.tar.gz
http://ftp.gnu.org/gnu/bison/bison-2.5.1.tar.gz
http://mirror.hust.edu.cn/gnu/libtool/libtool-2.4.6.tar.gz
https://cmake.org/files/v3.7/cmake-3.7.1.tar.gz