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