Linux下安装mysql三种方式
注意: linux下源码安装会遇到各种依赖问题,注意解决
参考博客:https://www.cnblogs.com/rencheng/p/6602004.html
对于linux平台我们有三种安装mysql方式,一下详细介绍各种方法的安装
RPM | 二进制 | 源码 | |
---|---|---|---|
优点 | 安装简单 | 安装简单;可以安装到任何路径下,灵活性好;一台服务器可以装多个mysql | 可按需定制编译,最灵活;性能最好,一台服务器可以装多个MySQL |
缺点 | 需要单独下载服务端和客户端;安装路径不灵活,默认路径不能修改,一台服务器只能装一个mysql | 已经经过编译,性能不如源码编译的好,不能灵活定制编译参数 | 安装过程比较复杂;编译时间长 |
文件布局 | /usr/bin (客户端程序和脚本) /usr/sbin(mysqld服务器) /var/lib/mysql(日志文件和数据库) |
2、二进制文件安装
1、rpm安装
比较简单,暂不做详细介绍
2、二进制文件安装
centos7由于默认安装了Mariadb数据库,在进行安装时删除
# 检查是否有Mariadb
rpm -qa |grep mariadb
# 如果有就删除
yum remove 包名
2.1、下载依赖和安装包
yum install -y libaio libaio-devel sqlite-devel
yum install -y numactl
官网下载通用二进制包并解压
2.2、 创建用户和用户组
groupadd mysql
useradd -g mysql mysql
2.3、创建数据存储路径
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/log
chown -R mysql:mysql /usr/local/mysql
2.4、编辑/etc/my.cnf
[client]
port = 3308
socket = /tmp/mysql.sock
[mysqld]
server_id=10
port = 3306
user = mysql
character-set-server = utf8mb4
default_storage_engine = innodb
log_timestamps = SYSTEM
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /var/run/mysqld/mysql.pid
max_connections = 1000
max_connect_errors = 1000
table_open_cache = 1024
max_allowed_packet = 128M
open_files_limit = 65535
###==========[innodb]=================
innodb_buffer_pool_size = 1024M
innodb_file_per_table = 1
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_purge_threads = 2
innodb_flush_log_at_trx_commit = 1
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 16M
innodb_max_dirty_pages_pct = 80
innodb_lock_wait_timeout = 30
innodb_data_file_path=ibdata1:1024M:autoextend
#####============[log]===============
log_error = /usr/local/mysql/log/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/log/mysql-slow.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
2.5、初始化
bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
初始密码可以查看 cat /usr/local/mysql/log/mysql-error.log
AW1vtSJm9Y/k
2.6、拷贝启动脚本
cp support-files/mysql.server /etc/init.d/mysqld
2.7、更改mysqld启动参数,并授权(开机自启动服务)
vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
2.8、启动、连接数据库(密码会随机生成,保存在error.log里面)
/etc/init.d/mysqld start
# 如果这里出现了var/run/mysqld/pid_file 文件错误
# 先是查看日志文件 ?log/mysql-error
# 解决: 创建该文件 并赋予相应的权限
cd /usr/local/mysql
./bin/mysql -uroot -p随机码
进去之后先修改密码,不然做不了其他操作
ALTER USER 'root'@'localhost' IDENTIFIED BY 'masicro(自定义)';
2.9、添加环境变量
vim /etc/profile
#在尾部添加下行
PATH="/usr/local/mysql/bin:$PATH"
source /etc/profile ##使配置生效
2.10、配置远程链接
首先需要关闭防火墙设置
# 关闭iptables 防火墙设置
service iptables stop
# 取消开机自启动
chkconfig iptables off
配置远程链接
grant all on *.* to root@'%' identified by 'password'
3、源码安装
3.1源码包获取
参考:https://blog.youkuaiyun.com/AinUser/article/details/81414627
3.2、编译
3.2.1、创建一个mysql用户组
groupadd mysql
useradd -g mysql mysql
3.2.2、第二步解包
tar -xzvf mysql-version.tar.gz
3.2.3、第三步构建Makefile
需要安装环境
yum install gcc gcc-c++
yum install -y ncurses-devel
yum install -y cmake
yum install -y libaio
yum install -y bison ***
3.2.4、cmake 配置,根据需要直接执行下面的部分,
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7 -DMYSQL_DATADIR=/usr/local/mysql5.7/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 -DWITH_BOOST=/usr/local/boost
*** 重新运行配置需要删除CMakeCache.txt
说明:
#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5 #安装路径
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DMYSQL_DATADIR=/var/mysql/data #数据安装路径
-DMYSQL_USER=mysql
-DSYSCONFDIR=/etc # mysql配置文件 my.cnf的存放地址,默认为/etc下
-DMYSQL_TCP_PORT=3306 # 数据库服务器监听端口,默认为3306
-DWITH_SSL=yes # 支持 SSL
-DMYSQL_USER=mysql # 默认为mysql//下面3个是数据库编码设置
-DEXTRA_CHARSETS=all # 安装所有扩展字符集,默认为all
-DDEFAULT_CHARSET=utf8 # 使用 utf8 字符
-DDEFAULT_COLLATION=utf8_general_ci # 校验字符//下面5个是数据库存储引擎设在
-DWITH_MYISAM_STORAGE_ENGINE=1 # 安装 myisam 存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 # 安装 innodb 存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 # 安装 archive 存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 安装 blackhole 存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 # 安装数据库分区
//在这个过程中,可能会因为缺少某些包而报错,参照报错信息用YUM安装相关的包,然后删除Makefile.txt,重新构建。这个步骤在错误信息中有详细说明
3.2.5、编译
make
make install
3.2.6、安装
编译完成后和二进制文件安装配置一样
附录:遇到的问题
1、源码安装
mysql5.7安装报错 CMake Error at cmake/boost.cmake:81(MESSAGE)
错误:
CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=This CMake script will look for boost in . If it is not there,
it will download and unpack it (in that directory) for you.If you are inside a firewall, you may need to use an http proxy:
export http_proxy=http://example.com:80
解决方案:
1、在/usr/local/boost下创建boost文件夹
mkdir -p /usr/local/boost
2、进入这个文件夹然后下载boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate
3、解压,并删除压缩包
tar -xzvf boost_1_59_0.tar.gz
rm -rf boost_1_59_0.tar.gz
4、继续cmake,添加下面内容
-DWITH_BOOST=/usr/local/boost
2、二进制文件安装
./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
如果安装mysql出现了以上的报错信息.这是却少numactl
这个时候如果是Centos就yum -y install numactl
就可以解决这个问题了,ubuntu的话就sudo apt-get install numactl
就可以解决这个问题了