mysql 数据库编译安装
目录规划
安装包 /data/tools,mysql 目录:/data/mysql/mysql /data/mysql/data
下载或上传 boost 解压
mkdir -p /data/tools
cd /data/tools
手动上传 boost_1_59_0.tar.gz 至 /data/tools。
tar -xzvf boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local
ln -s /usr/local/boost_1_59_0 /usr/local/boost
软连接做完后如图:
下载或上传 mysql
版本:mysql-5.7.19.tar.gz
手动上传 mysql-5.7.18.tar.gz 至 /data/tools
cd /data/tools
tar -xzvf mysql-5.7.18.tar.gz
搭建 yum 源
cd /etc/yum.repos.d
直接将 CentOS-Base.repo 配置文件拖进该目录
进行 yum 关联
yum clean all
yum list
安装依赖包
yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bibaio* libnum*
创建用户、组及目录
groupadd mysql
useradd -s /sbin/nologin -g mysql -M mysql
mkdir -p /data/mysql/mysql
mkdir -p /data/mysql/data
注1:-s /sbin/nologin
禁止用户登录,-g
属于 mysql 组,-M
表示不创建 home 目录
注2:groupadd
和 useradd
可以使用下面一行命令实现:useradd -s /sbin/nologin -M mysql
编译
必须在 mysql 文件目录下执行
cd /data/tools/mysql-5.7.18
cmake -DCMAKE_INSTALL_PREFIX=/data/mysql/mysql
-DMYSQL_DATADIR=/data/mysql/data
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DMYSQL_TCP_PORT=3306
-DMYSQL_USER=mysql
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/usr/local/boost
注:常用参数说明:
参数 | 说明 |
---|---|
DCMAKE_INSTALL_PREFIX=/data/mysql/mysql | 指定mysql程序默认安装目录默认/data/mysql/mysql |
DMYSQL_DATADIR=/data/mysql/data | 数据文件目录 |
DDEFAULT_CHARSET=utf8 | 指定服务器默认字符集 默认是latin1 |
DDEFAULT_COLLATION=utf8_general_ci | 服务器默认的校对规则,默认latin1_general_ci |
DMYSQL_TCP_PORT=3306 | 端口 |
DMYSQL_USER=mysql | 用户 |
DWITH_MYISAM_STORAGE_ENGINE=1 | 指定今天编译到mysql的存储引擎,myISAM,MEGE.MEMBER以及csv四种引擎默认被编译只服务器,不需要的特别指定 |
DWITH_INNOBASE_STORAGE_ENGINE=1 | |
DWITH_ARCHIVE_STORAGE_ENGINE=1 | |
DWITH_BLACKHOLE_STORAGE_ENGINE=1 | |
DWITH_MEMORY_STORAGE_ENGINE=1 | |
DDOWNLOAD_BOOST=1 | |
DSWITH_BOOST=/usr/local/boost |
编译安装
普通单核编译,速度慢:
make && make install
快速编译,4 核心同时编译,速度快,根据服务器核心数选择几核:
make -j 4 && make install
make clean
rm -rf CMakeCache.txt
创建配置文件
先备份老的 my.cnf 文件
mv /etc/my.cnf /etc/my.cnf.bak
将 my.cnf 扔进 /etc 目录下,本地已经制作好。
注1:如果 my.cnf 中日志文件在启动时报错,提示 my.cnf 中配置的文件不存在,可以手动创建一个文件,并且进行授权;
touch /data/mysql/mysql/mysql-error.log
chown -R mysql:mysql /data/mysql/mysql/mysql-error.log
注2:配置文件注意事项
设置 mysql 免密登录:
vi /etc/my.cnf
# 添加一行:
skip-grant-tables
# 第一次登陆不想使用系统生成的随机密码或者忘记密码时使用,使用完尽量屏蔽;
# 设置 mysql 大小写不敏感:
vi /etc/my.cnf
# 添加一行:
lower_case_table_names=1
# 禁用 DNS 查询,提供 mysql 数据库远程连接
skip-name-resolve
设置权限并初始化 mysql 系统授权表
# 文件夹授权
chown -R mysql.mysql /data/mysql/
# 注:使用 root 进行 mysql 初始化,注意需要添加 --user=mysql 参数,会生成一个随机密码(注意保存,初次登陆需要使用)
# 进入 mysql 目录
cd /data/mysql/mysql
./bin/mysqld --initialize --basedir=/data/mysql/mysql/ --datadir=/data/mysql/data/ --user=mysql
或者到 /data/mysql/mysql 下的 mysql-error.log 里查看
配置 mysql 服务开机自动启动
拷贝启动文件到 /etc/init.d/
cp /data/mysql/mysql/support-files/mysql.server /etc/init.d/mysqld
# 注:拷贝 /data/mysql/mysql/support-files/ 下的 mysql.server 文件到 /etc/init.d/,重命名为 mysqld
# 增加执行权限
chmod 755 /etc/init.d/mysqld # 或者使用 chmod +x /etc/init.d/mysqld
# 添加开机启动
chkconfig –add mysqld # 不用:chkconfig --level 345 mysqld on 时自动添加
chkconfig --level 345 mysqld on # 或者使用chkconfig mysqld on
# 设置软连接
ln -s /data/mysql/mysql/bin/mysql /usr/local/bin/mysql
启动 mysqld
service mysqld start # 或者 /etc/init.d/mysqld start
访问 mysql
cd /data/mysql/mysql/bin
./mysql -uroot -p # 密码就是上面root运行的时候记录的密码
# 修改mysql密码
update mysql.user set authentication_string =password('123456') where user = 'root';
flush privileges;
注:如果此处报错,提示需要先进行 alter,便使用 alter 进行。
alter user 'root'@'localhost' identified by '123456';
flush privileges;
grant all privileges on *.* to 'root'@'%'identified by '123456' with grant option; // 远程登录
flush privileges;
---root 免密码登陆不用设置,密码忘记时用这个办法
/usr/local/mysql/bin/mysqld_safe -skip-grant-table & mysql -u root mysql
$mysql> UPDATE user SET Password=PASSWORD('密码') where USER='root'
$mysql> flush privileges;
创建数据库(cm cdh 安装时使用)
Cloudera Manager server 数据库
./mysql -u root --password='123456' -e "create user 'cm'@'%' identified by '123456'"
./mysql -u root --password='123456' -e 'create database cm default character set utf8'
./mysql -u root --password='123456' -e "grant all privileges on cm.* to 'cm'@'%'"
注:或者用以下方法:
创建cm用户并授权
mysql -uroot -p123456 登录mysql
create user 'cm'@'%' identified by '123456';
创建cm用户,可以从任何ip登录,密码123456
create database cm default character set utf8;
创建cm数据库,字符集utf8
grant all privileges on cm.* to 'cm'@'%';
授权cm数据库所有权限给cm用户,可以从任何ip登录
现有CDH环境中,只需要配置CM即可,其他数据库不需要;在其他版本中还存在安装其他数据库,现有平台已经不使用。安装CDH时选择免费版,不要选择限时免费版。