cos-软件管理-mysql安装
uname -a
查看Linux系统版本的命令(3种方法)
lsb_release -a
,即可列出所有版本信息:这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。
cat /etc/redhat-release
,这种方法只适合Redhat系的Linux:- [root@S-CentOS home]#
cat /etc/redhat-release
CentOS release 6.5 (Final)
- [root@S-CentOS home]#
cat /etc/issue
,此命令也适用于所有的Linux发行版。cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/loca/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost -DDOWNLOAD_BOOST=1
MySQL-boost-5.7.35 源码包安装(自带boost版本)
- 安装前准备
服务器环境
- centos7.6
下载所有需要的安装包
(1)mysql-boost-5.7.35.tar.gz,(2)mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz- 链接:https://pan.baidu.com/s/1I5aru9IESv0qIlqTeprH8A 提取码:mqjy
上传文件到服务器
- #代表root用户执行此命令,$
- # mkdir /usr/local/software
- 上传所有软件到服务器/usr/local/software
- 安装前准备
开始安装
1. **安装所需依赖** 1. yum -y install cmake gcc gcc-c++ ncurses-devel ncurses openssl-devel 2. yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel 2. **创建组和用户** 1. # groupadd mysql 2. # useradd -r -g mysql -s /bin/false mysql 3. **创建相应目录并授权** 1. # mkdir -p /app/mysql/data 2. # chown -R mysql.mysql /app/mysql/ 4. **安装mysql** 1) # cd /app/software/ 2) # tar zxvf mysql-boost-5.7.35.tar.gz 3) # cd mysql-5.7.35 4) # cmake -DCMAKE\_INSTALL\_PREFIX=/app/mysql -DMYSQL\_DATADIR=/app/mysql/data -DMYSQL\_UNIX\_ADDR=/tmp/mysql.sock -DDEFAULT\_CHARSET=utf8 -DDEFAULT\_COLLATION=utf8\_general\_ci -DWITH\_BOOST=boost -DDOWNLOAD\_BOOST=1 - <br> - *ake 参数解释:* <br> 1) \-DCMAKE\_INSTALL\_PREFIX: 指定安装路径 2) \-DMYSQL\_DATADIR : 指定数据存放路径 3) \-DMYSQL\_UNIX\_ADDR :指定套间字路径 4) \-DDEFAULT\_CHARSET : 设置字符集 5) \-DDEFAULT\_COLLATION : 设置字符校验集 6) \-DWITH\_BOOST : 指定Boost扩展源码路径 7) \-DDOWNLOAD\_BOOST=1:如果查找不到boost则下载boost
1. **执行以下命令编译mysql**
1) # make
2) # make install
3) # chown -R mysql:mysql /app/mysql/
4) # vi /etc/my.cnf
[mysqld]
basedir = /app/mysql/
datadir = /app/mysql/data
socket = /tmp/mysql.sock
2. **初始化数据库:**
1) # cd /app/mysql/bin
2) # ./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
命令参数解释:
i) –defaults-file : 制定MySQL配置文件路径
ii) –initialize : 初始化随机密码,注意,初始化的密码是一个过期密码,登录后需要修改密码
iii) –user: 指定账户
iv) 上一个命令执行完之后,会在命令提示符的最后给出随机密码,
v) 一定记住 将此密码记录下来
<br>
启动mysql服务
1. # cd /app/mysql/support-files/ 2. # ./mysql.server start 3. # cd /app/mysql/bin/ 4. # ./mysql -u root -p
执行以下sql修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
开放远程连接MySQL服务权限
1. mysql> use mysql; 2. mysql> update user set host='%' where user='root'; 3. mysql> flush privileges;
到此完成
- 使用二进制文件安装mysql服务
a. 安装依赖包
# yum -y install libaio libaio-devel
b. 创建组和用户
i. # groupadd mysql
ii. # useradd -r -g mysql -s /bin/false mysql
c. 解压文件
i. # tar zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
ii. # mv mysql-5.7.35-linux-glibc2.12-x86_64 /usr/local/mysql
iii. # vi /etc/my.cnf
\[ mysqld \]
basedir = /usr/local/mysql/
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
\[mysqld\_safe\]
log-error=/usr/local/mysql/logs/error.log
pid-file=/usr/local/mysql/logs/mysql.pid
d. 切换至安装目录,初始化数据库
i. # cd /usr/local/mysql
ii. # bin/mysqld –defaults-file=/etc/my.cnf –initialize –user=mysql
e. 命令参数解释:
- –defaults-file : 制定MySQL配置文件路径
- –initialize : 初始化随机密码,注意,初始化的密码是一个过期密码,登录后需要修改密码
- –user: 指定账户
上一个命令执行完之后,会在命令提示符的最后给出随机密码,一定记住 将此密码记录下来
\# support-files/mysql.server start #启动mysql 服务器
\# bin/mysql -u root -p
i. Enter password: # 输入刚刚的随机密码链接数据库
ii. mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
f. 开放远程连接MySQL服务权限
- mysql> use mysql;
- mysql> update user set host=’%’ where user=’root’;
- mysql> flush privileges;
- 二进制安装到此完成 !
- 编译源码安装与二进制安装最大的区别就是编译源码安装时对源代码进行编译而二进制安装不需要编译,直接就可以使用;
g. my.cnf配置文件
\[mysql\]
default-character-set=utf8
socket=/tmp/mysql.sock
\[mysqld\]
default-storage-engine=INNODB
character\_set\_server=utf8
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
server\_id=1
port=3306
\# 是否区分大小写,0区分,1不区分
lower\_case\_table\_names=1
federated
max\_connections=3000
max\_allowed\_packet=512M
\# 表示缓冲池字节大小,推荐值为物理内存的50%~80%
innodb\_buffer\_pool\_size=20G
\# 用来控制redo log刷新到磁盘的策略。
innodb\_flush\_log\_at\_trx\_commit=1
max\_connect\_errors=10
sql\_mode=strict\_trans\_tables,no\_zero\_in\_date,no\_zero\_date,error\_for\_division\_by\_zero,no\_engine\_substitution
innodb\_open\_files=800
read\_buffer\_size=4M
read\_rnd\_buffer\_size=8M
thread\_cache\_size=10
tmp\_table\_size=20M
table\_open\_cache=2000
query\_cache\_size=40M
sort\_buffer\_size=256K
join\_buffer\_size=256K
\# 后台进程最大IO性能指标。默认200,如果SSD,调整为5000~20000
innodb\_io\_capacity=5000
\# 非交互式连接 最大空闲时长(jdbc)单位:秒
wait\_timeout=120
\# 交互式连接 最大空闲时长(mysql客户端)单位:秒
interactive\_timeout=120
\# 并发线程数,设为 CPU 核数的两倍
#thread\_concurrency=16
\# 慢查询开启
#slow\_query\_log = 'ON'
\# 慢查询sql存放文件路径
#slow\_query\_log\_file = /usr/local/mysql/data/slow.log
\# 记录查询超过1秒的语句
#long\_query\_time = 1
\# 开启查询缓存
query\_cache\_type = 1
\# 查询缓存大小
query\_cache\_size = 400M
\# 查询缓存单个sql最大值
#query\_cache\_limit = 1M
\# 除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存来提升InnoDB 的性能。这些内存就可以通过此参数来分配。(默认值不到百MB,调到1G提升3000tps)
#innodb\_additional\_mem\_pool\_size = 1G
\# 可以修改 InnoDB 为独立表空间模式,每个数据库的每个表都会生成一个数据空间。当一个 MySQL 服务器作为 Mycat 分片表存储服务器使用的情况下,单独表空间的访问性能要大大好友共享表空间,因此强烈建议使用独立表空间。
#innodb\_file\_per\_table=1
\# InnoDB 存储引擎的事务日志所使用的缓冲区
innodb\_log\_buffer\_size = 512M
\# 自动扩展InnoDB系统空间的增量大小, 对于大批量插入数据也是比较重要的优化参数(单位是 M)
#innodb\_autoextend\_increment = 1024M
\# 此参数确定数据日志文件的大小,以 M 为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间。(默认值50MB,调到2G后,tps由2000提升到20000,提高了10倍)
#innodb\_log\_file\_size = 2048M
\[client\]
port=3306
default-character-set=utf8
问题与解决
a. ==问题原因:==
首先pid文件是mysql启动后,生成的一个文件,里面记录的是mysql当前的进程号,如果创建失败,mysql就无法启动。可能原因:
mysql的端口被占用
生成pid文件的目录mysql的权限不足
mysql对应的my.cnf配置文件错误
mysql的启动脚本有问题
mysql有残余数据影响了服务的启动
注意查看报错日志,如没有特殊配置,通常在数据库的data目录下
==问题1:端口被占用==
==如果你启动的这个mysql的端口已被其他服务占用,应修改对应my.cnf中的端口号为其他端口,然后重启mysql==
\# \[mysqld\] \# port=3307
如果在重启mysql前,已有该mysql的进程,建议kill掉再重启
==问题2:生成pid文件的目录mysql的权限不足==
==找到指定的mysql的数据存放目录并授权==
\# chown -R mysql.mysql /data/mysql 备注: 通常有些情况,某些[linux](https://so.csdn.net/so/search?q=linux&spm=1001.2101.3001.7020)内核的系统,注重"安全",对目录或你登陆的账号的权限有限制,也会导致此问题. 可尝试给你数据库目录的前一个目录设置755权限 chmod -R 755 /data 如始终权限导致异常,请联系该服务器系统的提供者.
如果授权后,仍无法启动。可以自己touch一个以主机名命名的pid文件,再启动
a) # cd /data/mysql
b) # touch node1.pid问题3:该mysql对应的my.cnf配置文件错误
- 查看my.cnf中的port,datadir,basedir,socket等参数的配置是否正确,且配置的目录mysql是否有权限
- 需要注意的是: 不要把mysql其他版本的调优后的my.cnf文件 放到你的my.cnf配置的目录下
- 使用调优参数时,有时会因为版本变动的,部分参数不支持,初始化时导致异常.
例如:把mysql5.5调优后的my.cnf 直接使用到 mysql5.6 mysql5.7 mysql8.0
问题4:mysql的启动脚本有问题
当不确定启动脚本或mysql.server配置文件内参数是否正常时,先使用mysqld\_safe方式启动,查看是否可启动
(先cd到mysql的安装根目录)
./mysqld\_safe --defaults-file=/etc/mysql\_3306/my.cnf --user=mysql
or
./mysqld\_safe --defaults-file=/etc/mysql/3306/my.cnf --basedir=/Apk/install/mysql --datadir
\=/mysql/data/ --pid-file=/mysql/data/mysql.pid --socket=/mysql/data/mysql.sock --port=3306
如果可以启动,那么需要查看mysql启动脚本或mysql.server配置文件内参数并进行修改
重点看下面两个参数
basedir
datadir
b. MySQL系列—MySQL编译安装常见问题(或缺少依赖)及解决方法
MySQL 编译安装时需要安装的依赖(全):
yum install -y cmake
yum install ncurses ncurses-devel -y
yum install -y libarchive
yum install -y gcc gcc-c++
yum install -y openssl openssl-devel
yum install -y libtirpc libtirpc-devel
指定boost(下载、在编译项指定即可,见文章尾部: MySQL编译安装常用选项)
安装(安装方法见文章尾部)
以下问题经由(腾讯云服务器CentOS Linux release 8.0.1905 (Core)) 华为云服务器(CentOS Linux release 7.6.1810 (Core) ) 和 mysql-boost-5.7.30.tar.gz 测试而来
华为云服务器(CentOS Linux release 7.6.1810 (Core) )预装的软件比较多,出现提示需要安装的依赖比较少
**\*\*问题1\*\***
\-- Could NOT find Curses (missing: CURSES\_LIBRARY CURSES\_INCLUDE\_PATH)
CMake Error at cmake/readline.cmake:71 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:100 (FIND\_CURSES)
cmake/readline.cmake:193 (MYSQL\_USE\_BUNDLED\_EDITLINE)
CMakeLists.txt:581 (MYSQL\_CHECK\_EDITLINE)
- 出现原因:
缺少依赖
- 解决方法:
yum install ncurses ncurses-devel -y
**\*\*问题2\*\***
**CMake Error at cmake/boost.cmake:88 (MESSAGE):**
You can download it with -DDOWNLOAD\_BOOST=1 -DWITH\_BOOST=<directory>
This CMake script will look for boost in <directory>. 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
Call Stack (most recent call first):
cmake/boost.cmake:174 (COULD\_NOT\_FIND\_BOOST)
CMakeLists.txt:547 (INCLUDE)
- 出现原因:
没有指定boost位置,或boost位置错误
- 解决方法:
cd 指令或ls等指令验证boost路径是否正确,修改即可。
若果没有boost就需要下载,然后指定就可以了
**\*\*问题3\*\***
\-bash: cmake: command not found
- 出现原因:
没有安装cmake
解决方法:
yum install -y cmake**问题4**
cmake: symbol lookup error: cmake: undefined symbol: archive\_write\_add\_filter\_zstd 出现原因: 缺少依赖 解决方法: yum install -y libarchive \=====================================
**问题5**
**CMake Error at CMakeLists.txt:146 (PROJECT):** No CMAKE\_CXX\_COMPILER could be found. Tell CMake where to find the compiler by setting either the environment variable "CXX" or the CMake cache entry CMAKE\_CXX\_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH. 出现原因: 缺少gcc-c++ 解决方法: yum install -y gcc gcc-c++ \=====================================
**问题6**
Cannot find appropriate system libraries for WITH\_SSL=system. Make sure you have specified a supported SSL version. Valid options are : system (use the OS openssl library), yes (synonym for system), </path/to/custom/openssl/installation> CMake Error at cmake/ssl.cmake:63 (MESSAGE): Please install the appropriate openssl developer package. Call Stack (most recent call first): cmake/ssl.cmake:280 (FATAL\_SSL\_NOT\_FOUND\_ERROR) CMakeLists.txt:579 (MYSQL\_CHECK\_SSL) 出现原因: 缺少依赖 解决方法: yum install -y openssl openssl-devel \=====================================
**问题7**
**\-- Found PkgConfig: /usr/bin/pkg-config (found version "1.4.2")** **\-- Checking for module 'libtirpc'** **\-- Package 'libtirpc', required by 'virtual:world', not found** **CMake Error at cmake/rpc.cmake:76 (MESSAGE):** Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc Call Stack (most recent call first): rapid/plugin/group\_replication/configure.cmake:60 (MYSQL\_CHECK\_RPC) rapid/plugin/group\_replication/CMakeLists.txt:25 (INCLUDE) 出现原因: 缺少依赖 解决方法: yum install -y libtirpc libtirpc-devel \=====================================
**问题8**
**CMake Error at rapid/plugin/group\_replication/rpcgen.cmake:100 (MESSAGE):** Could not find rpcgen Call Stack (most recent call first): rapid/plugin/group\_replication/CMakeLists.txt:36 (INCLUDE) 出现原因: 缺少依赖 解决方法: **\*\*安装rpcsvc-proto\*\*** 安装rpcsvc-proto方法如下: 下载rpcsvs-proto [https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.2/rpcsvc-proto-1.4.2.tar.xz](https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4.2/rpcsvc-proto-1.4.2.tar.xz) 解压 tar -xvf rpcsvc-proto-1.4.2.tar.xz .configure make && make install 注意:如果下载的是tar.gz包,这个包需要手动生成configure文件后才能编译安装rpcvsc-proto,需要安装很多依赖项,很繁锁 [https://github.com/thkukuk/rpcsvc-proto/archive/refs/tags/v1.4.2.tar.gz](https://github.com/thkukuk/rpcsvc-proto/archive/refs/tags/v1.4.2.tar.gz) \====================================
c. 附:MySQL编译安装常用选项
cmake . \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定MySQL安装目录
-DSYSCONFDIR=/usr/local/mysql/etc \ #指定MySQL配置文件my.cnf文件目录
-DMYSQL_USER=mysql \ #指定MySQL运行用户
-DDEFAULT_CHARSET=utf8 \ #指定默认字符集
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认排序字符集
-DMYSQL_DATADIR=/mysql/data \ #指定数据文件存放路径
-DWITH_BOOST=/usr/local/src/mysql-5.7.30/boost/boost_1_59_0 \ #指定boost 文件存放路径
-DENABLED_LOCAL_INFILE=1 \ #启用本地加载数据
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \ #指定mysql.sock文件路径
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
作者:米老鼠的米
链接:https://www.jianshu.com/p/c31f404c2573
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
————————————————
版权声明:本文为CSDN博主「漠效」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/GX\_1\_11\_real/article/details/93010284