MySQL-5.6.29多實例部署
mysql
一,mysql-5.6.29源碼安裝步驟:
c++
1,安裝須要的軟件sql
[root@localhost ~]#yum -y install gcc gcc-c++ make ncurses ncurses-devel cmake cmake
二,源碼安裝mysql-5.6.29
數據庫
2.1)建立用戶和組並建立數據存放目錄vim
[root@localhost ~]#groupadd mysql [root@localhost ~]#useradd mysql -s /sbin/nologin -M -g mysql [root@localhost mysql-5.6.29]# mkdir -p /data/mysql_3306 [root@localhost mysql-5.6.29]# mkdir -p /data/mysql_3308
2.2)給數據庫配置環境變量
bash
[root@localhost mysql-5.6.29]# echo"export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib" >>/etc/profile [root@localhost mysql-5.6.29]#source /etc/profile [root@localhost mysql-5.6.29]#echo $PATH
2.3)解壓安裝mysql-5.6.29
socket
[root@localhost ~]#tar xf mysql-5.6.29.tar.gz [root@localhost mysql-5.6.29]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITHOUT_PARTITION_STORAGE_ENGINE=0 \ -DWITH_FAST_MUTEXES=1 \ -DWITH_ZLIB=bundled \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_READLINE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_DEBUG=0 [root@localhost mysql-5.6.29]# make [root@localhost mysql-5.6.29]# make install
2.4)給數據庫目錄受權ide
[root@localhost mysql-5.6.29]#chown -R mysql.mysql /usr/local/mysql [root@localhost mysql-5.6.29]#chown -R mysql.mysql /data/
三,配置數據庫測試
3.1)配置文件my.cnf文件ui
[root@localhost mysql-5.6.29]#vim /etc/my.cnf [root@mysqldb bin]# cat /etc/my.cnf [client] #port = 3306 #socket = /tmp/mysql.sock [mysqld3306] port = 3306 basedir = /usr/local/mysql datadir = /data/mysql_3306 socket = /tmp/mysql_3306.sock slow_query_log_file = /data/mysql_3306/slow.log log-error = /data/mysql_3306/error.log log-bin = /data/mysql_3306/mysql-bin sync_binlog = 1 binlog_cache_size = 4M default-storage-engine = InnoDB binlog_format = row transaction_isolation = REPEATABLE-READ innodb_buffer_pool_size = 100m [mysql3307] port = 3307 basedir = /usr/local/mysql datadir = /data/mysql_3307 socket = /tmp/mysql_3307.sock slow_query_log_file = /data/mysql_3307/slow.log log-error = /data/mysql_3307/error.log log-bin = /data/mysql_3307/mysql-bin sync_binlog = 1 binlog_cache_size = 4M default-storage-engine = InnoDB binlog_format = row transaction_isolation = REPEATABLE-READ innodb_buffer_pool_size = 100m [mysqld3308] port = 3308 basedir = /usr/local/mysql datadir = /data/mysql_3308 socket = /tmp/mysql_3308.sock slow_query_log_file = /data/mysql_3308/slow.log log-error = /data/mysql_3308/error.log log-bin = /data/mysql_3308/mysql-bin sync_binlog = 1 binlog_cache_size = 4M default-storage-engine = InnoDB binlog_format = row transaction_isolation = REPEATABLE-READ innodb_buffer_pool_size = 100m [mysqld_multi] mysqld=/usr/local/mysql/bin/mysqld_safe mysqladmin=/usr/local/mysql/bin/mysqladmin [mysqldump] quick max_allowed_packet = 32M
3.2)初始化數據庫文件
[root@mysqldb ~]# cd /usr/local/mysql/scripts/ [root@mysqldb scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3306 --defaults-file=/etc/my.cnf --user=mysql [root@mysqldb scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3307 --defaults-file=/etc/my.cnf --user=mysql [root@mysqldb scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3308 --defaults-file=/etc/my.cnf --user=mysql
3.3)多實例採用mysqld_multi來啓停數據庫
[root@mysqldb bin]# ./mysqld_multi --defaults-file=/etc/my.cnf --user=root --password=hwg123 start 3306,3307,3308
3.4)查看多實例運行的狀態
[root@mysqldb bin]# ./mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is running MySQL server from group: mysqld3308 is running
四,登陸數據庫操做
4.1)登陸數據庫是沒有密碼,所以須要修改密碼
[root@mysqldb bin]# mysql -uroot -p -P3306 -h 127.0.0.1 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.6.29-log Source distribution Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use mysql; mysql>UPDATE user SET password=PASSWORD('hwg123') WHERE user='root'; mysql>FLUSH PRIVILEGES; [root@mysqldb bin]# mysql -uroot -p -P3308 -h 127.0.0.1 mysql> use mysql; mysql>UPDATE user SET password=PASSWORD('hwg123') WHERE user='root'; mysql>FLUSH PRIVILEGES;
4.2)受權某個網段ip登陸到本機
先建一個庫db01測試用一下: mysql> create database db01; mysql> CREATE TABLE `goods` ( `gid` char(10) NOT NULL, `gnam` varchar(20) DEFAULT NULL, `gdate` date DEFAULT NULL, `gprice` char(100) DEFAULT '0', `gvprice` varchar(100) DEFAULT NULL, PRIMARY KEY (`gid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> show tables; mysql> desc goods; 再建立一個用戶tony用來遠程鏈接數據庫: mysql> grant all on db01.* to 'tony'@'10.93.58.%'identified by 'hwg123'WITH GRANT OPTION; mysql> flush privileges; 另一個3307數據庫也是同樣的設置: mysql> create database db02; mysql> CREATE TABLE `goods` ( `gid` char(10) NOT NULL, `gnam` varchar(20) DEFAULT NULL, `gdate` date DEFAULT NULL, `gprice` char(100) DEFAULT '0', `gvprice` varchar(100) DEFAULT NULL, PRIMARY KEY (`gid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; mysql> show tables; mysql> desc goods; 再建立一個用戶tony用來遠程鏈接數據庫: mysql> grant all on db02.* to 'tony'@'10.93.58.%'identified by 'hwg123'WITH GRANT OPTION; mysql> flush privileges;
5、開啓和中止數據庫
[root@mysqldb bin]# mysqld_multi stop 3306 此時發現咱們不能正常的關閉某個數據庫,查詢資料須要修改my.cnf和mysqld_multi參數 [root@mysqldb bin]#vim /etc/my.cnf 增長以下: [mysqld_multi] user = root password = hwg123 [root@mysqldb bin]# vim /usr/local/mysql/bin/mysqld_multi 修改以下一條記錄:my_print_defaults -s my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group; 修改後咱們就能夠正常的中止啓用數據庫: [root@mysqldb bin]# mysqld_multi stop 3307 [root@mysqldb bin]# mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is not running MySQL server from group: mysqld3308 is running