天天看点

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

菜鸟学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

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 ''@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

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 数据库排序属性

.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

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1890287如需转载请自行联系原作者

Winthcloud

继续阅读