菜鸟学Linux 第072篇笔记 MySQL source install



MySQL  产品列表

Server (mysqld, mysql)

Cluster 集群

Proxy   (读写分离)

Adminitrator

Query Browser

Workbench

Migration Toolkit

Embedded Server

Drivers and Connectors



MySQL --> MariaDB

Percona 



MySQL 安装

专用软件包管理器包

deb, rpm

rpm:

RHEL(Oracle Linux), CentOS

SUSE

rpm packages

MySQL-client

MySQL-debuginfo

MySQL-devel

MySQL-embedded

MySQL-ndb-management

MySQL-server

MySQL-shared

MySQL-shared-compat

MySQL-test

MySQL-VERSION.PLATFORM.src.rpm


通用二进制格式包

gcc(GNU), icc(Intel): x86, x64

源代码包 (可定制)

5.5, 5.6

cmake 



MySQL用户密码修改:

1. #mysqladmin -u USERNAME -h HOSTNAME password 'NEW_PASS' -p

2. mysql> SET PASSWORD FOR 'USERNAME'@'HOST'=password('new_pass')

3. mysql> UPDATE mysql.user SET PASSWORD=PASSWORD('new_pass') WHERE CONDITION

FLUSH PRIVILEGES



MySQL 安装

源码安装MySQL

1. cmake (编译安装)

2. 创建lvm分区(用来存放数据库文件 可扩容)

3. 安装 MySQL mysql-5.5.28 



1. 安装cmake

# tar xf cmake-2.8.8.tar.gz

# cd cmake-2.8.8

# make && make install




2. 创建lvm分区

# fdisk /dev/sdb

n e +5g t 8e w

# partprobe /dev/sdb

# pvcreate /dev/sdb1

# vgcreate myvg /dev/sdb1

# lvcreate -L 1G -n mydata myvg

# lvs

# mke2fs -j /dev/myvg/mydata

# mkdir /mydata

# vim /etc/fstab

/dev/myvg/mydata   /mydata       ext3    defaults        0 0

# mount -a 

# mkdir /mydata/data




3. 安装 MySQL mysql-5.5.28


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

-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

-DWITH_SSL=system

-DWITH_ZLIB=system

-DWITH_LIBWRAP=0


其它常用的选项:

-DMYSQL_TCP_PORT=3306

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock

-DENABLED_LOCAL_INFILE=1

-DEXTRA_CHARSETS=all

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DWITH_DEBUG=0

-DENABLE_PROFILING=1


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

make clean

rm CMakeCache.txt



# groupadd -r mysql

# useradd -r -g mysql -s /sbin/nologin mysql

# id mysql

# chown mysql.mysql /mydata/data

# tar -xf mysql-5.5.28.tar.gz

# cd mysql-5.5.28

# cmake . -LH

# 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

# cd /usr/local/mysql

# chown -R :mysql .

# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data

# cp support-files/my-large.cnf /etc/my.cnf

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

# chkconfig mysqld on

# chkconfig --list mysqld

# service mysqld start

# vim /etc/profile.d/mysql.sh

export PATH=$PATH:/usr/local/mysql/bin

# . /etc/profile.d/mysql.sh



(到此mysql完成编译安装)




删除匿名用户

mysql> DROP USER ''@localhost;

查看是否删除匿名用户

mysql> SELECT user,host,password FROM mysql.user WHERE user='';


mysql> DROP USER ''@localhost;

mysql> DROP USER ''@mysky;

mysql> DROP USER 'root'@'::1';

mysql> SELECT User,Host,Password FROM user;

  mysql> UPDATE user SET Password=PASSWORD('mysql') WHERE user='root';

  mysql> FLUSH PRIVILEGES;




 配置本地用户访问无需输入用户名和密码

 # vim ~/.my.cnf

  [client]

user=root

password=mysql

host=localhost





访问mysql

mysql-->mysqld


同台主机Unix

mysql --> mysql.sock --> mysqld

同台主机Windows

mysql --> memory(pipe) --> mysqld


不在同一台主机上,基于TCP/IP协议通信,

mysql

-uroot -h192.168.11.122(本机)  此方式为使用tcp/ip方式通信



Mysql client programs

mysql

mysqldump

mysqladmin

mysqlimport

mysqlcheck

[client]

-u HOSTNAME

-h HOST

-p ''

--protocol {tcp|socket|pipe|memory}

--port PORT



Mysql no-client utilities

myisamchk

myisampack


MyISAM:

每表三个文件

.frm 表结构

.MYD 表数据

.MYI 表索引


InnoDB:

.opt 数据库排序属性

.frm 表结构

.idb 表空间 (表数据和表索引)


所有表共享一个表空间文件:

建议:每表一个独立的表空间文件;

# vim /etc/my.cnf

[mysqld]

innodb_file_per_table = 1

# service mysql restart

# mysql

mysql> SHOW GLOBAL VARIABLES LIKE '%innodb%';

显示为innodb_file_per_table           | ON