Linux下编译安装MySQL
一、环境准备
yum install -y ncurses-devel libaio-devel
yum install -y cmake make
useradd -s /sbin/nologin -M mysql
wget --no-check-certificate https://downloads.mysql.com/archives/get/file/mysql-5.6.38.tar.gz
二、编译安装mysql
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.38 \
-DMYSQL_DATADIR=/application/mysql-5.6.38/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.38/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
make
make install
报错: CMake Error: your C compiler: "CMAKE_C_COMPILER-NOTFOUND" was not found,需要安装gcc、gcc-c++
yum -y install gcc gcc-c++
并删除原来的mysql-5.6.13目录,重新解压缩tar.gz包
三、初始化数据库(初始化数据库(建库),初始化的是mysql基本运行所必须的一些“系统库”(元数据))
ln -s /application/mysql-5.6.38 /application/mysql #创建软链接
chown -R mysql.mysql /application/mysql
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql #初始化MySQL
/application/mysql/bin/mysqld --verbose --help #查看可配置的参数
[root@db01 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/application/mysql/data
socket=/application/mysql/tmp/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/application/mysql/tmp/mysqld.log
pid-file=/application/mysql/tmp/mysqld.pid
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
/etc/init.d/mysqld start
echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile #把mysql加入到环境变量
source /etc/profile
四、密码破解
1、方法一:
[root@db01 mysql]# mysqld_safe --skip-grant-tables --skip-networking & #以“安全模式”登录数据库,并禁止远程登陆
mysql> update mysql.user set password=PASSWORD('110') where user='root' and host='localhost';
2、方法二:
[root@db01 mysql]# vim /etc/my.cnf
[mysqld]
skip-grant-tables #在my.cnf文件中加上这句(跳过mysql授权表),修改完密码后注释或删除
[root@db01 mysql]# /etc/init.d/mysqld restart #重启MySQL服务
[root@db01 mysql]# mysql #登录MySQL
mysql> select user(); #查看登录用户是否为root
mysql> update mysql.user set password=password("123") where user="root" and host="localhost"; #修改密码为123
mysql> flush privileges;
注:
5.7中不再使用password字段进行存储密码,使用authentication_string来替代,修改命令如下:
mysql> update mysql.user set authentication_string=PASSWORD('123') where user='root' and host='localhost';
五、MySQL工作流程
1、客户端发起 登录数据库命令:
mysql -uroot -p110
2、服务器接收到连接命令
2.1 提供连接协议(TCP/IP、socket)
2.2 用户密码验证模块,通过mysql.user表中记录的用户信息,检验客户端发送过的用户密码
2.3 分配一个专门的连接线程和当前对接工作,接收SQL(不负责处理SQL),将SQL交给SQL继续处理,最后返回结果。
3、SQL层接收到上层传送过来的SQL语句(select user,password,host from mysql.user;)
3.1 通过语法模块判断语法,如果语法通过,交到语义判断模块。
3.2 语义判断模块判断语义,
判断一下是什么类型的SQL语句(DML、DDL、DCL、DQL),会将不同的类型的SQL交给不同的SQL解析器解析
操作对象是什么,并进行权限判断
3.3 SQL解析器解析SQL语句,解析成1种或多种执行计划(explain)
3.4 优化器拿到多种执行计划,进行判断,选择他觉得更优的执行计划,交给执行器
3.5 执行器按照执行计划进行SQL执行,生成获取数据的方法(哪个数据文件的哪个页上),交由下层继续处理
3.6 将上次运行过的SQL语句本身进行hash,加上语句的执行结果(获取的数据),放到查询缓存中一份。
注:一般情况下我们可以通过redis memecahe来代替这项功能。
3.7 查询日志记录:binlog
4、存储引擎层接受到SQL层处理后的结果,从磁盘获取到相应的数据。再返回给SQL进行结构化成表的形式,再显示给用户。
六、配置文件(/etc/my.cnf)
1、能影响什么?
服务启动[server]:mysqld、mysqld_safe
客户端链接[client]:mysql、mysqladmin、mysqldump
2、配置示例:
vim /etc/my.cnf
[server]
basedir=/application/mysql
datadir=/application/mysql/data
socket=/tmp/mysql.sock
log-error=/var/log/mysql.log
log_bin=/data/mysql/mysql-bin
binlog_format=row
skip_name_resolve=1
server_id=3306
port=3306
[client]
socket=/tmp/mysql.sock
注:
使用/application/mysql/bin/mysqld --verbose --help查到的参数都可以写到配置文件里,写到配置文件里时去掉参数前的--
3、配置文件的读取顺序
/etc/my.cnf → /etc/mysql/my.cnf → $MYSQL_HOME/my.cnf → ~/.my.cnf → --defaults-extra-file
注意:
1、多个配置文件中都有socket=xxx.sock,且每个配置文件中的值都不一样时按照以上顺序,最后一个为准
2、如果设置了 --defaults-file=/tmp/aa.txt,会忽略以上所有的配置信息,如:
mysqld_safe --defaults-file=/tmp/mysql.txt &
3、如果命令行中设置了和配置文件中相同的参数,最终会以命令行为准,如:
mysqld_safe --log-error=/var/log/mysql.log --socket=/tmp/mysql.sock --port=3310 &
七、MySQL多实例(实例:mysqld+后台线程+预分配的内存结构)
1、多套独立的目录(日志、socket)
mkdir -p /data/330{7,8,9}
chown -R mysql.mysql /data/330*
2、独立的数据(初始化多次)
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/data/3307 --user=mysql
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/data/3308 --user=mysql
/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/data/3309 --user=mysql
3、独立的端口(3307、3308、3309)
4、独立的配置文件(/data/3307/my.cnf /data/3308/my.cnf /data/3309/my.cnf )
[root@db02 3309]# cat /data/3307/my.cnf /data/3308/my.cnf /data/3309/my.cnf
[mysqld]
basedir=/application/mysql
datadir=/data/
socket=/data//mysql.sock
log-error=/data//mysql.log
log_bin=/data//mysql-bin
binlog_format=row
skip_name_resolve=
server_id=
port= [mysqld]
basedir=/application/mysql
datadir=/data/
socket=/data//mysql.sock
log-error=/data//mysql.log
log_bin=/data//mysql-bin
binlog_format=row
skip_name_resolve=
server_id=
port= [mysqld]
basedir=/application/mysql
datadir=/data/
socket=/data//mysql.sock
log-error=/data//mysql.log
log_bin=/data//mysql-bin
binlog_format=row
skip_name_resolve=
server_id=
port=
5、启动多实例
mysqld_safe --defaults-file=/data/3307/my.cnf &
mysqld_safe --defaults-file=/data/3308/my.cnf &
mysqld_safe --defaults-file=/data/3309/my.cnf &
netstat -lnp|grep 330
八、常用命令
mysql
-u 用户名
-p 密码
-h mysql,IP地址
-S 套接字文件
-P 端口
-e 非交互式访问数据库并执行命令
mysql -uroot -p123456 -e "show databases"
启动方式:mysql.server(脚本) ------> mysqld_safe(脚本) ------>mysqld(服务)
mysqladmin -uroot -p123456 shutdown #关闭mysql
mysqladmin -uroot -p password 123456 #设置登陆密码
select user,host from mysql.user; #查询数据库中的用户(mysql用户由用户名@'主机域'组成)
删除没有设置密码的账户:drop user ''@'db01'; drop user ''@'localhost'; drop user 'root'@'db01'; drop user 'root'@'::1'; drop user 'root'@'127.0.0.1';
参考链接:
https://www.52wiki.cn/Plate/Info/id/5.html #MySQL报错
Linux下编译安装MySQL的更多相关文章
- CentOS Linux下编译安装MySQL
本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.4 64位操作系统下实践 ...
- Linux 下编译安装MySQL
最近在研究Mysql,当然先要把它安装在机器上才行呀.记录下操作,加深记忆,也供以后参考. 准备工作: Linux版本:Redhat Linux 6.4 Mysql版本(安装包):mysql-5.6. ...
- linux下 编译安装Mysql
正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm ...
- Linux下编译安装mysql数据库服务
以下是用putty工具远程登录到服务器,在命令行下面操作: Cmake工具下载地址:http://ftp.lfs-matrix.net/pub/blfs/conglomeration/cmake/ M ...
- Linux下yum安装MySQL
写这篇文章的原因是:在刚开始使用Linux操作系统时想要搭建LAMP环境,于是开始在Google和百度上各种寻找资料,碰到了不是很多的问题后,我决定写这篇文章总结一下在Linux下yum安装MySQL ...
- LINUX下编译安装PHP各种报错大集合
本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...
- linux下如何安装mysql和redis
linux下如何安装mysql(mariadb) linux下如何安装软件? 1. yum安装软件也得注意,一个是配置yum源 1.我们当前的是阿里云的yum源(下载速度特别快) 通过 yum ins ...
- linux下编译安装vim7.4并安装clang_complete插件
linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...
- linux下编译安装curl
linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...
随机推荐
- C++max的使用方法
#include <iostream> //#include <algorithm>//std::min std::max #include <stdint.h> ...
- 如何在Framework中读取bundle中的Res
前因: 因为公司上架前后的原因,外围的平台层部分提前上线,而我做的功能部分需要晚一些上线,是单独的一个工程在其他仓库开发. 我的资源文件放在Bundle中.合到主工程中,资源文件不用改,直接拖进去.倒 ...
- Selenium Java Selection的使用
用于向具有drop-down的选择框中输入内容 new Select(new ChromeDriver().findElement(By.cssSelector(" ..."))) ...
- 用vim + xdebug 来追踪thinkphp的执行过程
tree命令的使用几个有实际应用的参数 -a 这是默认的 -d: 只显式目录, 不需要显式目录下的文件 -L: 列出显式的深度. 当前目录下的所有东西为第一级... 在tp下, 有多个Common但是 ...
- 给斐讯K1刷机并拨号e信(湖北地区测试无问题)
◆购买斐讯k1路由器 路由器在天猫京东斐讯旗舰店都有售卖,我买的价格是159,不过有一张铃铛卡,一个月之后返还160元,相当于0元购 ◆路由器刷不死Breed 1.路由与电脑有线连接好,输入192.1 ...
- 【问题解决:Mysql操作容量限制问题】Error updating database. Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1082 > 1024)
在做查询数据库操作时,报了以上错误,还有out of memery heap hacp ,原因是mysql的max_allowed_packet设置过小引起的,我一开始设置的是1M,后来改为了20M ...
- HIHOcoder 1466 后缀自动机六·重复旋律9
思路 后缀数组+博弈论的好题,首先对两个串都建出SAM,然后题目的要求实际上就是在SAM的trans上转移即可 DAG的博弈是经典问题,然后dfs求出SG函数,两个游戏的组合就是把SG函数异或起来,异 ...
- Linux安装svn客户端
Red Hat Linux 1.安装$ yum install subversion 2.常见问题1.执行svn报错:cannot set LC_CTYPE localevi /etc/profile ...
- Javascript 高级程序设计(第3版) - 第02章
2017-05-10 更新原文: http://www.cnblogs.com/daysme 在 html 中使用 js 把js代码写在 <script type="text/java ...
- Python 一个抓取糗百的段子的小程序
import requests import re #糗事百科爬虫类 class QSBK: #初始化方法,定义一些变量 def __init__(self): self.headers={ &quo ...