mysql的源码编译安装

MySQL的安装目录

目录包含内容
binserver端和客户端的启动命令
data默认数据目录
data/mysql数据目录下的mysql库文件
data/mysql/user.frmMyISM存储引擎user表的结构定义文件
data/mysql/user.MYDMyISM存储引擎user表的数据文件
data/mysql/user.MYIMyISM存储引擎user表的缩引文件
include头文件
lib库文件
man手册
mysql-test测试组件
scripts初始化脚本
share不同语言的错误信息提示
sql-bench基准测试
support-files启动服务器脚本

MySQL读取配置文件

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • $MYSQL_HOME/my.cnf(实例(不同的 端口)运行的家目录)
  • defaults-extra-file=/path/to/file 启动时加载的参数
  • ~/.my.cnf 启动用户的家目录下
  • 如果信息有重复,最后一次读取的是最终生效的

[mysqld]对mysql服务的配置
[mysql] 对一个客户端的配置
[client] 对所有的客户端的配置

在客户端配置~/.my.cnf 直接连接服务器

[root@localhost ~]# cat .my.cnf 
[client]
user = root
host = localhost
password = 123

mysql客户端和服务器端的通信

如果是在同一台机器上,Linux中mysql 和 mysqld通过mysql.sock通信,在windows中,mysql和mysqld通过memory(pipe)内存(管道)通信

如果不在同一台机器上,基于TCP/IP协议通信。

MySQL的客户端工具

客户端工具
mysql
mysqldump
mysqladmin
mysqlcheck
mysqlimport

[client]

–protocol 指定协议
tcp/IP 基于tcp/ip网络连接
socket Linux中基于套接字
memory windows中内存
pip windows中的管道

MySQL 非客户端工具
mysisamchk
myisampack

设置初始密码

用户:
初始化有三个root用户:root@127.0.0.1 root@localhost root@hostname

两个匿名用户:@localhost 和 @hostname

mysql> select Host,User from mysql.user;
+-----------------------+------+
| Host                  | User |
+-----------------------+------+
| 127.0.0.1             | root |
| ::1                   | root |
| localhost             |      |
| localhost             | root |
| localhost.localdomain |      |
| localhost.localdomain | root |
+-----------------------+------+
6 rows in set (0.00 sec)

删除匿名用户

mysql> DROP USER ''@localhost;

MySQL用户密码修改

方法一:

mysqladmin  -u root -h HOSTNAME password “NEW-PASSWORD-p  ‘旧密码’

方法二:

mysql> SET PASSWORD FOR ‘USERNAME‘@’HOST‘=PASSWORD('new_password');

方法三:

mysql> UPDATE mysql.user SET PASSWORD=PASSWORD('new_pass') WHERE  CONDITION;
mysql> flush privileges;

编译& 安装

一、安装cmake

跨平台编译器

# tar xf cmake-2.8.8.tar.gz
# cd cmake-2.8.8
# ./bootstrap
# make 
# make install

二、编译安装mysql-5.5.25

1、使用cmake编译mysql-5.5

cmake指定编译选项的方式不同于make,其实现方式对比如下:

./configure           cmake .
./configure --help    cmake . -LH or ccmake .

指定安装文件的安装路径时常用的选项:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql    #默认安装路径
-DMYSQL_DATADIR=/data/mysql      # 数据存储路径
-DSYSCONFDIR=/etc        # 配置文件路径

默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:

-DWITH_INNOBASE_STORAGE_ENGINE=1     #innodb存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1    #黑洞存储引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1    #联合存储引擎

若要明确指定不编译某存储引擎,可以使用类似如下的选项:

-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:

-DWITH_READLINE=1      # 能使用loadinfile批量导入mysql数据
-DWITH_SSL=system           # 支持SSL会话
-DWITH_ZLIB=system       # 压缩库
-DWITH_LIBWRAP=0        

其它常用的选项:

-DMYSQL_TCP_PORT=3306       #默认端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock     #套接字文件
-DENABLED_LOCAL_INFILE=1     # 是否启用local in file
-DEXTRA_CHARSETS=all     # 字符集
-DDEFAULT_CHARSET=utf8    # 默认字符集
-DDEFAULT_COLLATION=utf8_general_ci    #排序规则
-DWITH_DEBUG=0  # 不起用DEBUG
-DENABLE_PROFILING=1   #mysql的性能分析

字符集:比如 人 设置底层存储为01010101 10101010,定义了01代码和汉字的对应关系。常见的中文字符集邮GBK、GB2312、UTF8

如果想清理此前的编译所生成的文件,则需要使用如下命令:

make clean
rm CMakeCache.txt
2、编译安装
# groupadd -r mysql
# useradd -g mysql -r -d /data/mydata mysql
# tar xf mysql-5.5.25a.tar.gz 
# cd mysql-5.5.25a
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
          -DMYSQL_DATADIR=/mydata/data \
          -DSYSCONFDIR=/etc \
          -DWITH_INNOBASE_STORAGE_ENGINE=1 \
          -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
          -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
          -DWITH_READLINE=1 \
          -DWITH_SSL=system \
          -DWITH_ZLIB=system \
          -DWITH_LIBWRAP=0 \
          -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
          -DDEFAULT_CHARSET=utf8 \
          -DDEFAULT_COLLATION=utf8_general_ci
# make 
# make install

编译安装实例

下载安装CMAKE

[root@miner-k ~]# wget https://cmake.org/files/v2.8/cmake-2.8.8.tar.gz
[root@miner-k ~]# tar xvf cmake-2.8.8.tar.gz
[root@miner-k ~]# cd cmake-2.8.8
[root@miner-k cmake-2.8.8]# ./configure
[root@miner-k cmake-2.8.8]# make
[root@miner-k cmake-2.8.8]# make install

准备工作
创建lvm

[root@localhost ~]# vgcreate myvg /dev/sdb
[root@localhost ~]# lvcreate -L 10G -n mydata myvg
[root@localhost ~]# mkfs.ext4 /dev/myvg/mydata

设置开机自起

[root@localhost ~]# vim /etc/fstab
/dev/myvg/mydata        /mydata                 ext4    defaults 0 0

[root@localhost ~]# mount -a

安装编译环境

[root@miner-k ~]# yum -y groupinstall "Development tools"
[root@miner-k ~]# yum -y install ncurses-devel
[root@miner-k ~]# yum -y install openssl-devel

下载& 安装MySQL

[root@miner-k ~]# mkdir /mydata/data
[root@miner-k ~]# groupadd -r mysql
[root@miner-k ~]# useradd -r -g mysql -s /sbin/nologin mysql

[root@miner-k ~]# chown -R mysql.mysql /mydata/data/


[root@miner-k ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.5.59.tar.gz
[root@miner-k ~]# tar -xvf mysql-5.5.59.tar.gz
[root@miner-k ~]# cd mysql-5.5.59
root@localhost mysql-5.5.59]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1  -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system  -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
[root@localhost mysql-5.5.59]# make
[root@localhost mysql-5.5.59]# make install
[root@localhost mysql-5.5.59]# cd /usr/local/mysql
[root@localhost mysql]# chown -R :mysql .

数据库初始化

[root@localhost mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
Installing MySQL system tables...
180621 10:52:34 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
180621 10:52:34 [Note] ./bin/mysqld (mysqld 5.5.59) starting as process 23829 ..

复制配置文件&启动mysqld

[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf 
cp: overwrite `/etc/my.cnf'? y
[root@localhost mysql]# cp support-files/mysql
mysqld_multi.server  mysql-log-rotate     mysql.server         
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost mysql]# service mysqld start
Starting MySQL.Logging to '/mydata/data/localhost.localdomain.err'.
. SUCCESS! 

设置环境变量

[root@localhost mysql]# vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin   
[root@localhost mysql]# source /etc/profile.d/mysql.sh

mysql的存储引擎

查看数据库支持存储引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.01 sec)

MYISM和Innodb的区别

MYISM存储引擎保存三个文件:

  • *.frm 表的结构定义文件
  • *.MYD 表的数据文件
  • *.MYI 表的缩引文件

InnoDB:

  • 默认情况下每一个表都有一个表结构文件,
  • 所有的数据存放在共享一个表空间文件
  • 建议:每个表一个独立的表空间文件(innodb_file_per_table 设置参数)

  • *.frm 表结构

  • *.ibd 表空间(表数据和表索引)
  • *.opt 数据库使用的默认字符集合排序规则

参考链接

mysql官网的安装指导
percona官网

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值