Centos7.4 如何使用cmake编译安装mysql
lipiwang 2024-10-21 08:56 16 浏览 0 评论
基本概述
mysql简介
部署环境
实验步骤
1、Mysql 下载地址:https://downloads.mysql.com/archives/community/
下载安装包:https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz
[root@localhost ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz
--2021-04-07 09:48:21-- https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.20.tar.gz
Resolving downloads.mysql.com (downloads.mysql.com)... 137.254.60.14
Connecting to downloads.mysql.com (downloads.mysql.com)|137.254.60.14|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.20.tar.gz [following]
--2021-04-07 09:48:23-- https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.20.tar.gz
Resolving cdn.mysql.com (cdn.mysql.com)... 184.31.28.242
Connecting to cdn.mysql.com (cdn.mysql.com)|184.31.28.242|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 32979820 (31M) [application/x-tar-gz]
Saving to: ‘mysql-5.6.20.tar.gz’
100%[=========================================>] 32,979,820 9.70MB/s in 3.2s
2021-04-07 09:48:26 (9.70 MB/s) - ‘mysql-5.6.20.tar.gz’ saved [32979820/32979820]
[root@localhost ~]#
2、解压安装包
[root@localhost ~]# tar xf mysql-5.6.20.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg mysql-5.6.20 mysql-5.6.20.tar.gz perl5 yum_back
[root@localhost ~]#
3、安装依赖工具(gcc c ncurses ncurses-devel cmake libaio bison gcc-c++ git)
- yum 安装
[root@localhost ~]# yum -y install gcc c ncurses ncurses-devel cmake libaio bison gcc-c++ git
Cmake工具和configure工具,configure二进制程序用来生成Makefile文件,Makefile记录软件需要的环境和要编译的参数
[root@localhost ~]# cd mysql-5.6.20
[root@localhost mysql-5.6.20]# ls
BUILD dbug libmysqld regex unittest
BUILD-CMAKE Docs libservices scripts VERSION
client Doxyfile-perfschema man sql vio
cmake extra mysql-test sql-bench win
CMakeLists.txt include mysys sql-common zlib
cmd-line-utils INSTALL-SOURCE mysys_ssl storage
config.h.cmake INSTALL-WIN-SOURCE packaging strings
configure.cmake libevent plugin support-files
COPYING libmysql README tests
[root@localhost mysql-5.6.20]# cd
[root@localhost ~]#
[root@localhost ~]# cd mysql-5.6.20
[root@localhost mysql-5.6.20]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql55/ \
> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
> -DMYSQL_DATADIR=/data/mysql \
> -DSYSCONFDIR=/etc \
> -DMYSQL_USER=mysql \
> -DMYSQL_TCP_PORT=3306 \
> -DWITH_XTRADB_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_PARTITION_STORAGE_ENGINE=1 \
all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DENABLED_LOCAL_INFILE=1 \
> -DWITH_EXTRA_CHARSETS=1 \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DEXTRA_CHARSETS=all \
> -DWITH_BIG_TABLES=1 \
> -DWITH_DEBUG=0
5、make 编译
- make -j4
[root@localhost mysql-5.6.20]# make -j4
6、make install
- make install安装
[root@localhost mysql-5.6.20]# make install -j4
7、设置配置文件
- 创建配置文件
[root@localhost mysql-5.6.20]# cd /usr/local/mysql55/
[root@localhost mysql55]# ll support-files/
total 32
-rwxr-xr-x 1 root root 1153 Apr 7 20:08 binary-configure
-rw-r--r-- 1 root root 773 Jul 18 2014 magic
-rw-r--r-- 1 root root 1126 Apr 7 20:08 my-default.cnf
-rwxr-xr-x 1 root root 1061 Apr 7 20:08 mysqld_multi.server
-rwxr-xr-x 1 root root 880 Apr 7 20:08 mysql-log-rotate
-rwxr-xr-x 1 root root 10880 Apr 7 20:08 mysql.server
[root@localhost mysql55]# \cp -f support-files/my-default.cnf /etc/my.cnf
[root@localhost mysql55]# \cp -f support-files/mysql.server /etc/init.d/mysqld
8、设置服务启动
- 测试
[root@localhost mysql55]# chkconfig --add mysqld
[root@localhost mysql55]# chkconfig --level 35 mysqld on
9、创建用户、目录,并修改权限
- /data/mysql数据库数据存放位置
- 创建mysql用户
- 修改权限
[root@localhost mysql55]# mkdir -p /data/mysql
[root@localhost mysql55]# useradd -M -s /sbin/nologin mysql
[root@localhost mysql55]# chown -R mysql.mysql /data/mysql/
[root@localhost mysql55]# /usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/
FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql55/scripts/mysql_install_db:
Data::Dumper
这里报错,根据提示,安装perl*,然后再次初始化
[root@localhost ~]# yum -y install perl*
[root@localhost mysql55]# /usr/local/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql55/
......
[root@localhost mysql55]# ln -s /usr/local/mysql55/bin/* /usr/bin/ 将mysql bin下面的执行程序连接到/usr/bin
10、启动、测试
- service mysqld start
- /etc/init.d/mysqld stop
- systemctl start mysqld
[root@localhost ~]# service mysqld start
Starting MySQL.. SUCCESS!
[root@localhost ~]#
MYSQL数据库配置文件详解
- 常见的配置文件参数
[mysqld] 服务器端配置
datadir=/data/mysql 数据目录
socket=/var/lib/mysql/mysql.sock socket通信设置
user=mysql 使用mysql用户启动
symbolic-links=0 是否支持快捷方式
log-bin=mysql-bin 开启bin-log日志
server-id = 1 mysql服务ID
auto_increment_offset=1
auto_increment_increment=2
[mysqld_safe] mysql服务安全启动配置
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
key_buffer_size 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般为内存的50%
show variables like ‘key_buffer_size‘;
max_connections = 3000
每个客户端连接最大的错误允许数量,如果达到了此限制,这个客户端将会被MySQL服务阻止直到执行了”FLUSH HOSTS”或者服务重启.
innodb_buffer_pool_size
对于InnoDB表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size对于MyISAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引。
对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。
根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。
basedir = path # 使用给定目录作为根目录(安装目录)。
datadir = path # 从给定目录读取数据库文件。
pid-file = filename # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);
[mysqld]
socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
port = 3306 # 指定MsSQL侦听的端口
key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。
table_cache = 512 # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
sort_buffer_size = 2M # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size = 8M # 改参数在使用行指针排序之后,随机读用的。
myisam_sort_buffer_size = 64M # MyISAM表发生变化时重新排序所需的缓冲
thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
thread_cache = 8 #缓存可重用的线程数
skip-locking # 避免MySQL的外部锁定,减少出错几率增强稳定性。
[mysqldump]
max_allowed_packet =16M # 服务器和客户端之间最大能发送的可能信息包
MYSQL 密码管理
MYSQL数据库在使用过程中为了加强安全防范,需要设置密码访问,如何设置密码,及密码忘记如何破解,如下设置密码授权,密码修改及破解的方法。
MYSQL 创建用户授权
- 权限
数据库名.* 数据库中的所有
数据库名.表 指定数据库中的某张表
数据库名.存储过程 指定数据库中的存储过程
*.* 所有数据库
1
2
3
4
授权localhost主机通过huang用户和admin123密码访问本地的ISP库的所有权限;
mysql> grant all on ISP.* to huang@localhost identified by 'admin123';
Query OK, 0 rows affected (0.21 sec)
1
2
授权所有主机通过hun 用户和123密码访问本地ISP库的查询、插入、更新、删除权限
mysql> grant select,insert,update,delete on *.* to hun@"%" identified by '123';
Query OK, 0 rows affected (0.00 sec)
1
2
授权192.168.10.10主机通过huang用户和admin123密码访问本地的ISP库的所有权限;
mysql> grant all on ISP.* to huang@'192.168.10.10' identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)
MYSQL 密码破解方法
- 在配置文件[mysqld]模块中添加skip-grant-tables
[root@localhost ~]# /etc/init.d/mysqld stop 1、停止mysql服务
Shutting down MySQL. SUCCESS!
[root@localhost ~]#
[root@localhost ~]# vim /etc/my.cnf 2、修改配置文件
[root@localhost ~]# cat /etc/my.cnf|grep skip-grant*
skip-grant-tables
[root@localhost ~]# /etc/init.d/mysqld restart 3、重启mysql 服务,
ERROR! MySQL server PID file could not be found!
Starting MySQL.. SUCCESS!
[root@localhost ~]# mysql 4、没有密码进入mysql
mysql> use mysql; 使用mysql数据库
Database changed
mysql>
mysql> update user set password = Password('hebao') where user = 'root'; 5、修改密码
mysql> flush privileges; 6、刷新权限
mysql> quit;
总结
MYSQL 用户操作
连接数据库
mysql -u user -p
例:mysql -u root -p
常见错误如下:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running.
退出连接:
QUIT 或者 Ctrl+D
查看、创建、使用数据库,表
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database S default charset utf8 collate utf8_general_ci;
mysql> use S;
Database changed
mysql> show tables;
Empty set (0.00 sec)
用户操作
- 创建用户
创建用户
create user '用户名'@'IP地址' identified by '密码';
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
修改密码
set password for '用户名'@'IP地址' = Password('新密码');
注:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)
mysql> create user 'hbs'@'192.168.10.10' identified by '123';
Query OK, 0 rows affected (0.00 sec)
mysql> drop user 'hbs'@'192.168.10.10';
Query OK, 0 rows affected (0.00 sec)
mysql> rename user 'hbs'@'192.168.10.10' to 'liuaoni'@'192.168.10.13';
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> set password for 'liuaoni'@'192.168.10.13'=Password('!23');
Query OK, 0 rows affected (0.00 sec)
mysql>
MYSQL 表操作
- 查看表
show tables; 查看数据库全部表
select * from 表名; 查看表所有内容
创建表
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8
来一个实例好详解
CREATE TABLE `tab1` (
`nid` int(11) NOT NULL auto_increment,
`name` varchar(255) DEFAULT test,
`email` varchar(255),
PRIMARY KEY (`nid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注:
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)注意:1、对于自增列,必须是索引(含主键)2、对于自增可以设置步长和起始值
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
删除表
drop table 表名
清空表内容
delete from 表名
truncate table 表名
修改表内容
添加列:
alter table 表名 add 列名 类型
删除列:
alter table 表名 drop column 列名
修改列:
alter table 表名 modify column 列名 类型; -- 类型
alter table 表名 change 原列名 新列名 类型; -- 列名,类型
添加主键:
alter table 表名 add primary key(列名);
删除主键:
alter table 表名 drop primary key;
alter table 表名 modify 列名 int, drop primary key;
添加外键:
alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键:
alter table 表名 drop foreign key 外键名称
修改默认值:
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除默认值:
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
数据库表内容的操作(增删改查)
- 增
nsert into 表 (列名,列名...) values (值,值,...)
insert into 表 (列名,列名...) values (值,值,...),(值,值,值...)
insert into 表 (列名,列名...) select (列名,列名...) from 表
例:
insert into tab1(name,email) values('test','test8851@163.com')
删
delete from 表 # 删除表里全部数据
delete from 表 where id=1 and name='test' # 删除ID =1 和name='test' 那一行数据
改
update 表 set name = 'test' where id>1
查
select * from 表
select * from 表 where id > 1
select nid,name,gender as gg from 表 where id > 1
查这块的条件太多太多我给列举出来至于组合还得看大家的理解程度哈
a、条件判断where
select * from 表 where id > 1 and name != 'aylin' and num = 12;
select * from 表 where id between 5 and 16;
select * from 表 where id in (11,22,33)
select * from 表 where id not in (11,22,33)
select * from 表 where id in (select nid from 表)
b、通配符like
select * from 表 where name like 'zhang%' # zhang开头的所有(多个字符串)
select * from 表 where name like 'zhang_' # zhang开头的所有(一个字符)
c、限制limit
select * from 表 limit 5; - 前5行
select * from 表 limit 4,5; - 从第4行开始的5行
select * from 表 limit 5 offset 4 - 从第4行开始的5行
d、排序asc,desc
select * from 表 order by 列 asc - 根据 “列” 从小到大排列
select * from 表 order by 列 desc - 根据 “列” 从大到小排列
select * from 表 order by 列1 desc,列2 asc - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
e、分组group by
select num from 表 group by num
select num,nid from 表 group by num,nid
select num,nid from 表 where nid > 10 group by num,nid order nid desc
select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
select num from 表 group by num having max(id) > 10
特别的:group by 必须在where之后,order by之前
如果感觉小编写得不错,请素质三连:点赞+转发+关注。我会努力写出更好的作品分享给大家。更多JAVA进阶学习资料小编已打包好,可以关注私信找我领取哦!
原文 //blog.csdn.net/weixin_42313749/article/details/115556729
相关推荐
- 前端入门——css 网格轨道详细介绍
-
上篇前端入门——cssGrid网格基础知识整体大概介绍了cssgrid的基本概念及使用方法,本文将介绍创建网格容器时会发生什么?以及在网格容器上使用行、列属性如何定位元素。在本文中,将介绍:...
- Islands Architecture(孤岛架构)在携程新版首页的实践
-
一、项目背景2022,携程PC版首页终于迎来了首次改版,完成了用户体验与技术栈的全面升级。作为与用户连接的重要入口,旧版PC首页已经陪伴携程走过了22年,承担着重要使命的同时,也遇到了很多问题:维护/...
- HTML中script标签中的那些属性
-
HTML中的<script>标签详解在HTML中,<script>标签用于包含或引用JavaScript代码,是前端开发中不可或缺的一部分。通过合理使用<scrip...
- CSS 中各种居中你真的玩明白了么
-
页面布局中最常见的需求就是元素或者文字居中了,但是根据场景的不同,居中也有简单到复杂各种不同的实现方式,本篇就带大家一起了解下,各种场景下,该如何使用CSS实现居中前言页面布局中最常见的需求就是元...
- CSS样式更改——列表、表格和轮廓
-
上篇文章主要介绍了CSS样式更改篇中的字体设置Font&边框Border设置,这篇文章分享列表、表格和轮廓,一起来看看吧。1.列表List1).列表的类型<ulstyle='list-...
- 一文吃透 CSS Flex 布局
-
原文链接:一文吃透CSSFlex布局教学游戏这里有两个小游戏,可用来练习flex布局。塔防游戏送小青蛙回家Flexbox概述Flexbox布局也叫Flex布局,弹性盒子布局。它决定了...
- css实现多行文本的展开收起
-
背景在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景:那么,如何通过纯css实现这样的效果呢?实现的难点(1)位于多行文本右下角的展开收起按钮。(2)展开和收起两种状态的切换。(3)文本...
- css 垂直居中的几种实现方式
-
前言设计是带有主观色彩的,同样网页设计中的css一样让人摸不头脑。网上列举的实现方式一大把,或许在这里你都看到过,但既然来到这里我希望这篇能让你看有所收获,毕竟这也是前端面试的基础。实现方式备注:...
- WordPress固定链接设置
-
WordPress设置里的最后一项就是固定链接设置,固定链接设置是决定WordPress文章及静态页面URL的重要步骤,从站点的SEO角度来讲也是。固定链接设置决定网站URL,当页面数少的时候,可以一...
- 面试发愁!吃透 20 道 CSS 核心题,大厂 Offer 轻松拿
-
前端小伙伴们,是不是一想到面试里的CSS布局题就发愁?写代码时布局总是对不齐,面试官追问兼容性就卡壳,想跳槽却总被“多列等高”“响应式布局”这些问题难住——别担心!从今天起,咱们每天拆解一...
- 3种CSS清除浮动的方法
-
今天这篇文章给大家介绍3种CSS清除浮动的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。首先,这里就不讲为什么我们要清楚浮动,反正不清除浮动事多多。下面我就讲3种常用清除浮动的...
- 2025 年 CSS 终于要支持强大的自定义函数了?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!1.什么是CSS自定义属性CSS自...
- css3属性(transform)的一个css3动画小应用
-
闲言碎语不多讲,咱们说说css3的transform属性:先上效果:效果说明:当鼠标移到a标签的时候,从右上角滑出二维码。实现方法:HTML代码如下:需要说明的一点是,a链接的跳转需要用javasc...
- CSS基础知识(七)CSS背景
-
一、CSS背景属性1.背景颜色(background-color)属性值:transparent(透明的)或color(颜色)2.背景图片(background-image)属性值:none(没有)...
- CSS 水平居中方式二
-
<divid="parent"><!--定义子级元素--><divid="child">居中布局</div>...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)