當前環境mysql
ip : 192.168.1.153linux
系統版本sql
當前虛擬機還沒安裝任何版本的mysql和mariadb包:數據庫
注意若是此前已經安裝過mysql-server的rpm包而但願使用通用二進制格式安裝mariadb時必定要把mysql-server徹底卸載或把mysqld服務關掉並確保它不會開機自動啓動。使用通用二進制格式安裝mariadb以前儘量不要安裝mysql-servervim
使用通用二進制格式安裝mariadb安全
1、下載mariadb-5.5.36-linux-x86_64.tar.gzbash
2、解壓、建立軟連接軟連接爲之後mariadb的升級提供了便利服務器
#使用-C選項指定展開歸檔的目錄併發
[root@localhost ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local [root@localhost ~]# cd /usr/local
#爲mariadb-5.5.36-linux-x86_64建立連接目錄目錄名必定要爲mysqlapp
[root@localhost local]# ln -sv mariadb-5.5.36-linux-x86_64 mysql [root@localhost local]# cd mysql
三、把lvm邏輯卷做爲數據庫數據的存放位置
建議在生產環境中最好把數據庫的數據存放到lvm的邏輯卷中底層lvm應該經過硬件raidraid10來搭建。
好處
隨着數據的增多存儲空間不夠用時能動態擴展存儲空間大小。
能利用lvm邏輯卷的快照功能對數據進行備份。
注意實際生產環境中不要把數據庫的數據存放到系統磁盤的邏輯捲上以避免系統磁盤損壞而致使數據庫的數據丟失。
(1)在非系統磁盤上建立邏輯卷mydata
[root@localhost ~]# fdisk -l /dev/sdb1 Disk /dev/sdb1: 32.2 GB, 32218389504 bytes [root@localhost ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created [root@localhost ~]# vgcreate myvg /dev/sdb1 Volume group "myvg" successfully created [root@localhost ~]# lvcreate -L 10G -n mydata myvg Logical volume "mydata" created [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mydata myvg -wi-a----- 10.00g
(2)格式化邏輯卷mydata
[root@localhost ~]# mke2fs -t ext4 -m 3 -L MYDATA -b 4096 /dev/myvg/mydata
(3)邏輯卷mydata掛載至/mydata目錄下並在該目錄下新建一個目錄data來存放數據。
[root@localhost ~]# mkdir /mydata [root@localhost ~]# vim /etc/fstab #設定開機自動掛載
[root@localhost ~]# mount -a [root@localhost ~]# mount /dev/mapper/myvg-mydata on /mydata type ext4 (rw) [root@localhost ~]# mkdir /mydata/data
(4)建立mysql系統用戶和mysql系統組
[root@localhost ~]# groupadd -r mysql [root@localhost ~]# useradd -g mysql -r mysql [root@localhost ~]# id mysql uid=496(mysql) gid=493(mysql) groups=493(mysql)
(5)爲了安全運行mysql服務使用的是普通用戶不能使用管理員身份運行mysql。
將/mydata/data目錄及其目錄下的全部文件的屬主、屬組都設成mysql
[root@localhost ~]# chown -R mysql.mysql /mydata/data [root@localhost ~]# ll -d /mydata/data drwxr-xr-x 2 mysql mysql 4096 Aug 9 06:30 /mydata/data
#修改/usr/local/mysql/目錄及其目錄下全部的文件的屬主爲root屬組爲mysql 因是編譯安裝爲了能讓mysql系統用戶正常運行屬組必定要設爲mysql。
[root@localhost ~]# chown -R root.mysql /usr/local/mysql/
4、爲mysql提供配置文件
[root@localhost ~]# mkdir /etc/mysql [root@localhost ~]# cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf
注意不能把my-large.cnf複製成/etc/my.cnf由於系統默認安裝了mysql-libs(它已經提供/etc/my.cnf)爲了不發生錯誤把配置文件放到/etc/mysql/my.cnf
編輯 /etc/mysql/my.cnf並在[mysqld]中指定數據庫中數據存放的位置
[mysqld] # Try number of CPU's*2 for thread_concurrency #指定最大併發線程數 thread_concurrency = 4 #改成自身cpu核心數*2 datadir = /mydata/data #數據庫中數據存放的路徑
五、初始化mysql數據庫
注意若是你按如下方式執行會發生錯誤不能在 scripts目錄下執行mysql_install_db腳本由於該腳本依賴於mysql目錄下的/bin/my_print_defaults。
[root@localhost mysql]# cd scripts/ [root@localhost scripts]# ./mysql_install_db --datadir=/mydata/data --user=mysql FATAL ERROR: Could not find ./bin/my_print_defaults
正常作法
[root@localhost scripts]# cd .. [root@localhost mysql]# scripts/mysql_install_db --datadir=/mydata/data --user=mysql
查看/mydata/data目錄中是否已生成mysql默認數據庫
[root@localhost mysql]# ls /mydata/data aria_log.00000001 mysql mysql-bin.000002 performance_schema aria_log_control mysql-bin.000001 mysql-bin.index test
六、爲mysql提供服務啓動腳本
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@localhost mysql]# ll /etc/rc.d/init.d/mysqld # 確保該腳本有執行權限 -rwxr-xr-x 1 root root 11844 Aug 9 07:59 /etc/rc.d/init.d/mysqld [root@localhost mysql]# chkconfig --add mysqld # 把mysqld添加到服務列表中 [root@localhost mysql]# chkconfig --list mysqld # 默認開機自動啓動 mysqld 0:off1:off2:on3:on4:on5:on6:off
7、導出mysql的二進制文件、頭文件、庫文件、幫助文檔
導出二進制程序
[root@localhost mysql]# vim /etc/profile.d/mysql.sh [root@localhost mysql]# cat /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH [root@localhost mysql]# source /etc/profile.d/mysql.sh [root@localhost mysql]# echo $PATH /usr/local/mysql/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
導出頭文件
[root@localhost mysql]# ln -s /usr/local/mysql/include/ /usr/include/mysql [root@localhost mysql]# ll /usr/include/mysql lrwxrwxrwx 1 root root 25 Aug 9 08:13 /usr/include/mysql -> /usr/local/mysql/include/
導出幫助文檔
[root@localhost mysql]# vim /etc/man.config MANPATH /usr/loacl/mysql/man #添加此項
導出庫文件
[root@localhost mysql]# echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf [root@localhost mysql]# ldconfig -v | grep mysql /usr/local/mysql/lib: #新版本的庫文件 libmysqld.so.18 -> libmysqld.so.18 libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0 /usr/lib64/mysql: #舊版本的庫文件 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
8、啓動服務
[root@localhost mysql]# service mysqld start Starting MySQL..... [ OK ] [root@localhost mysql]# ss -tnl | grep 3306 LISTEN 0 50 *:3306 *:* [root@localhost ~]# ll /tmp/*.sock srwxrwxrwx 1 mysql mysql 0 Aug 19 00:59 /tmp/mysql.sock
上面這個文件由服務產生本地客戶端能夠以此設備文件鏈接Mysql服務
注意
當mysqld服務中止時該mysql.sock文件也會被刪除
[root@localhost ~]# service mysqld stop Shutting down MySQL... [ OK ] [root@localhost ~]# ll /tmp/*.sock ls: cannot access /tmp/*.sock: No such file or directory
九、登陸mysql服務器
[root@localhost mysql]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.36-MariaDB-log MariaDB Server Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.07 sec)
能正常訪問!