Linux下,基于Centos源码安装MySql
安装所需的环境
#[root@localhost ~]# yum -y install make bison-devel ncures-devel libaio
[root@localhost ~]# yum -y install libaio libaio-devel
[root@localhost ~]# yum -y install perl-Data-Dumper
[root@localhost ~]# yum -y install net-tools
[root@localhost ~]# yum -y install gcc gcc-c++
[root@localhost ~]# yum -y install cmake
[root@localhost ~]# yum -y install ncurses-devel
[root@localhost ~]# yum -y install autoconf
[root@localhost ~]# yum -y install perl perl-devel
也可以一行
yum -y install gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel
必备的包和工具
gcc/g++ :MySQL 5.6开始,需要使用g++进行编译。
cmake :MySQL 5.5开始,使用cmake进行工程管理,cmake需要2.8以上版本。
bison :MySQL语法解析器需要使用bison进行编译。
ncurses-devel :用于终端操作的开发包。
zlib :MySQL使用zlib进行压缩
功能需要的包
libxml :用于XML输入输出方式的支持。
openssl :使用openssl安全套接字方式通信。
dtrace :用于诊断MySQL问题。
或者手动下载安装
bison下载地址:http://www.gnu.org/software/bison/
[root@localhost ~]# tar zxvf bison-2.5.1.tar.gz
[root@localhost ~]# cd bison-2.5.1
[root@localhost ~]# ./configure
[root@localhost ~]# make
[root@localhost ~]# make install
安装cmake(我安装的是3.15.4的版本)
cmake下载地址:http://www.cmake.org/
tar -xzvf cmake-3.15.4.tar.gz
cd cmake-3.15.4
./bootstrap
make
make install
# 更新一下配置
source /etc/profile
官网地址: https://dev.mysql.com/downloads/mysql/5.6.html#downloads
mysql源码下载地址:https://dev.mysql.com/downloads/mysql/5.6.html#downloads
源码包地址:https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35.tar.gz
创建mysql安装目录以及数据存放目录
[root@localhost ~]# mkdir /usr/local/mysql
[root@localhost ~]# mkdir /usr/local/mysql/data
创建用户、用户组
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql mysql
安装
tar -zxvf mysql-5.6.46.tar.gz
cd mysql-5.6.46
# 安装必要的配置
yum install openssl-devel
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DINSTALL_DATADIR=/usr/local/mysql/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DENABLED_LOCAL_INFILE=1
如果是centos8以上会报错cmake: symbol lookup error: cmake: undefined symbol: archive_write_add_filter_zstd
因为centOS8(x86_64 或 aarch64) 系统下 yum或dnf 默认安装的 cmake-3.18.2-11.el8版本,安装后无法使用
解决办法:
第一种:
安装 libarchive
dnf install libarchive 或者 yum install libarchive
第二种: 安装低版本或者高版本的 cmake
1.卸载cmake程序
yum remove cmake 或 rpm -e cmake
2.重新安装cmake,
网址:https://cmake.org/download/
3.创建软连接
ln -s /xx-path/cmake /usr/bin/cmake
make && make install
CMAKE参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //默认安装目录
-DINSTALL_DATADIR=/usr/local/mysql/data //数据库存放目录
-DDEFAULT_CHARSET=utf8 //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all //安装所有扩展字符集
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
-DMYSQL_USER=mysql
-DMYSQL_TCP_PORT=3306
CMAKE详细配置请参照mysql官网
注意事项
:
如安装失败重新编译时,需要清除旧的对象文件和缓存信息。
# make clean
# rm -f CMakeCache.txt
# rm -rf /etc/my.cnf
配置mysql
检查系统是否已经有mysql用户,如果没有则创建
[root@localhost mysql-5.6.46]# cat /etc/passwd | grep mysql
[root@localhost mysql-5.6.46]# cat /etc/group | grep mysql
修改权限
[root@localhost mysql-5.6.46]# chown -R mysql:mysql /usr/local/mysql
切换到mysql目录
cd /usr/local/mysql
设置权限等东西
chown -R mysql:mysql .(#这里是有个.的大家要注意#)
scripts/mysql_install_db --user=mysql ( 为了安全安装完成后请修改权限给root用户) (先进行这一步再做如下权限的修改)
chown -R root:mysql . (将权限设置给root用户,并设置给mysql组, 取消其他用户的读写执行权限,仅留给mysql "rx"读执行权限,其他用户无任何权限)
chown -R mysql:mysql ./data (数据库存放目录设置成mysql用户mysql组)
chmod -R ug+rwx . (赋予读写执行权限,其他用户权限一律删除仅给mysql用户权限)
将mysql的配置文件拷贝到/etc
将mysql的启动服务添加到系统服务中
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysql
修改my.cnf
vi /etc/my.cnf
在下面添加:
user=mysql
datadir=/usr/local/mysql/data
default-storage-engine=MyISAM
配置环境变量
vim/etc/profile
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"
source /etc/profile
启动mysql(还是在mysql的目录下进行的)
cp support-files/mysql.server /etc/init.d/mysql
service mysql start
service mysql stop
service mysql restart
开机自启动mysql服务
chkconfig --add mysql
chkconfig mysql on
修改密码
mysqladmin -u root password
为root添加远程连接的能力
mysql -u root -p
mysql>use mysql;
mysql>desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456"; //为root添加远程连接的能力。
mysql>update user set Password = password('xxxxxx') where User='root';
mysql>select Host,User,Password from user where User='root';
mysql>flush privileges; //刷新权限
mysql>exit //退出
创建用户并给它权限bus_scan_code_db数据库权限
mysql> insert into user(Host,User,Password) values("%","latteitcjz",password("123456"));
mysql> GRANT ALL PRIVILEGES ON bus_scan_code_db.* TO 'latteitcjz'@'%' IDENTIFIED BY '123456';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON bsc.* TO root@'%' identified by 'root';
mysql> FLUSH PRIVILEGES;
CentOS升级到7之后,使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口
--zone : 作用域,网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接
--add-port : 添加端口与通信协议,格式为:端口/通讯协议,协议是tcp 或 udp
--permanent : 永久生效,没有此参数系统重启后端口访问失效
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
# firewall-cmd --reload