1. 程式人生 > 實用技巧 >OC 成員變數,例項變數,屬性變數 @property @synthesize

OC 成員變數,例項變數,屬性變數 @property @synthesize

一、二進位制包下載:地址:https://downloads.mariadb.org/mariadb/10.2.35/ 選擇你要安裝的版本;該地址有三種資料格式的檔案:Source——原始碼Binaries——二進位制Packages——rpm包(針對centos,Redhat,Ubuntu系列的)
下載二進位制包:mariadb-10.2.35-linux-x86_64.tar.gz版本 //linux表示在linux系統中效驗過的程式。二進位制10.2.35版本配置教程地址:https://mariadb.com/kb/en/installing-mariadb-binary-tarballs/注:原始碼只帶版本號,不會帶linux或者window提示,包比較小,只有69.9MB左右,而二進位制檔案,是在linux或者window上編譯好了的,會帶有一些提示資訊。


二、安裝二進位制程式mariadb:1、檢查系統環境:
//1、確保當前系統沒有安裝相同的軟體包;
[root@localhost ~]# rpm -q mariadb-server
package mariadb-server is not installed
[root@localhost ~]# rpm -q mysql-server
package mysql-server is not installed
//檢視當前3306埠是空閒的
[root@localhost ~]# ss -ntl
2、二進位制包安裝準備教程:
//1、準備使用者:    
[root@localhost ~]# useradd -r -d /data/mysqldb    -s /sbin/nologin mysql  
// -r:普通的系統使用者,
// -d:指定家目錄,(建議使用邏輯卷;便於擴充套件)
// /data/mysqldb這個資料夾預設是沒有的,執行上面也不會建立,加上-m強行去建立,當前不去強制,後期改
// -s /sbin/nologin shell型別,

[root@localhost ~]# getent passwd mysql
mysql:x:996:994::/data/mysqldb:/sbin/nologin
[root@localhost ~]# id mysql            //主組建立好了
uid=996(mysql) gid=994(mysql) groups=994(mysql)   

//2、指定存放資料庫程式目錄路徑,
[root@localhost ~]# tar -zxvf mariadb-10.2.35-linux-x86_64.tar.gz  -C /usr/local/   
 //-C表示指定檔案的路徑;解壓完是mariadb-10.2.35-linux-x86_64,
 編譯時使用的mysql目錄,建立軟連線或者更改目錄名稱,此刻會建立存放資料庫程式的第一個資料夾
//3、建立軟連線
[root@localhost local]# ln -s mariadb-10.2.35-linux-x86_64/ mysql  
//因為編譯的時候使用的是mysql這個資料夾,建議建立軟連線;也是可以的
[root@localhost local]# ll
lrwxrwxrwx   1 root root  29 Nov  6 17:11 mysql -> mariadb-10.2.35-linux-x86_64/

//更改檔案的所有者(不強制更改)
[root@localhost local]# ll mysql/             //檢視資料夾發現檔案的所有者都是1000,
total 176
drwxrwxr-x  2 1000 1000  4096 Oct 23 01:55 bin
[root@localhost local]# chown -R root mysql/  //只改檔案的所有者,所屬組不會發生變化;
[root@localhost local]# ll mysql/
drwxrwxr-x  2 root 1000  4096 Oct 23 01:55 bin
[root@localhost local]# chown -R root: mysql/  //root:加上冒號表示所屬組也更改,
        或者root:root也是同理
[root@localhost local]# ll mysql/
drwxrwxr-x  2 root root  4096 Oct 23 01:55 bin
2、配置環境變數:
//4、配置環境變數:
[root@localhost ~]# ls /usr/local/mysql/bin/        //資料庫的二進位制檔案
aria_chk        mbstream           mysqladmin 
//放到PATH變數裡面
[root@localhost local]# echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh   
                //把mysql的二進位制檔案放到PATh變數裡面
[root@localhost local]# . /etc/profile.d/mysql.sh               //使變數生效
[root@localhost local]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
3、建立資料存放目錄,若是生產資料,建議使用邏輯卷(邏輯卷建立教程:知識點一)
//5、建立存放生產資料目錄mysqldb(在/data下掛載邏輯卷後建立mysqldb)
[root@localhost ~]# df      -h
/dev/mapper/vg0-lv_mysql  62879748   32992  62846756   1% /data
[root@localhost ~]# mkdir /data/mysqldb
[root@localhost ~]# chown mysql.mysql /data/mysqldb   //把改資料夾所有者所屬組都更改為mysql
[root@localhost ~]# ll -d /data/mysqldb/
drwxr-xr-x 2 mysql mysql 6 Nov  6 17:57 /data/mysqldb/
[root@localhost ~]# chmod 770 /data/mysqldb/          //更改檔案的許可權,其他人不可以訪問該資料夾
[root@localhost ~]# ll -d /data/mysqldb/
drwxrwx--- 2 mysql mysql 6 Nov  6 17:57 /data/mysqldb/
4、檢查程式所需要的兩個資料夾:
[root@localhost ~]# ll /usr/local/mysql/ -d         //資料庫程式存放的位置
drwxrwxr-x 12 root root 282 Nov  3 02:30 /usr/local/mysql/
[root@localhost ~]# ll /data/mysqldb/ -d            //收集使用者資料的,生產資料存放位置
drwxrwx--- 2 mysql mysql 6 Nov  6 17:57 /data/mysqldb/
5、生成mysql資料庫檔案:呼叫指令碼(進入到二進位制程式所在的資料夾裡面);只是指定生成資料庫檔案。
//6、生成資料庫資料檔案
[root@localhost ~]# cd /usr/local/mysql/            //進入到二進位制程式資料夾
[root@localhost mysql]# ls scripts/    //生成資料庫檔案呼叫指令碼,該指令碼在scripts目錄之下。
mysql_install_db
[root@localhost scripts]# ./mysql_install_db  --datadir=/data/mysqldb  --user=mysql    
            //--datadir  指定生成的資料庫存放位置
FATAL ERROR: Could not find ./bin/my_print_defaults
//安裝資料庫;在scripty下執行會報錯;
//因為該mysql_install_db指令碼會呼叫一些檔案mysql目錄下的一些檔案,只能切回上一級目錄

[root@localhost mysql]# scripts/mysql_install_db  --datadir=/data/mysqldb  --user=mysql     
            //執行該指令碼,出現ok說明呼叫指令碼成功,生成資料庫成功
Installing MariaDB/MySQL system tables in '/data/mysqldb' ...
OK
[root@localhost mysql]# ll /data/mysqldb/   //可以在我們準備的收集使用者資料的目錄下看到檔案
total 110620
-rw-rw---- 1 mysql mysql    16384 Nov  6 18:13 aria_log.00000001        
6、配置啟動程式指令碼:修改二進位制檔案,告訴二進位制檔案啟動指令碼啟動程式在什麼位置(知識點二、知識點三);
//7、修改啟動程式二進位制檔案
[root@localhost mysql]# ls support-files/ 
                        //這個目錄下配置檔案,作為我們mysql資料庫的配置檔案,提供了好幾款的配置檔案,
binary-configure  
my-huge.cnf                     //超級大的環境用該程式(針對記憶體來說的)
my-large.cnf                    //大環境用該程式(針對記憶體來說的)
my-small.cnf                    //小環境用該程式檔案  (針對記憶體來說的)             
my-innodb-heavy-4G.cnf          //內測4個G的用該程式(針對記憶體來說的)
my-medium.cnf                   //中小型環境用該程式(針對記憶體來說的)

[root@localhost mysql]# cat support-files/mysql-log-rotate      //檔案裡會有簡單的說明
# This logname can be set in /etc/my.cnf
# by setting the variable "log-error"

[root@localhost ~]# cp /etc/my.cnf{,.bak}   //備份我們之前的配置檔案       shell語句備份範例
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf  
                //我們配置huge.cnf環境程式,覆蓋到my.cnf我們的配置檔案
cp: overwrite ‘/etc/my.cnf’?y               //表示同意覆蓋

//編輯啟動程式配置檔案
[root@localhost mysql]# vim /etc/my.cnf     //修改我們的配置檔案
[client]
port            = 3306
socket          = /tmp/mysql.sock           
[mysqld]
port            = 3306
datadir         = /data/mysqldb             //新增生產資料儲存位置
socket          = /tmp/mysql.sock           //使用mysql.sock預設檔案位置
6.1、配置資料庫啟動指令碼:
//8、設定開機自啟動
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld        
                        //把啟動指令碼cp到/etc/init.d/並改名稱為mysqld
[root@localhost mysql]# ll /etc/init.d/mysqld 
[root@localhost mysql]# chkconfig --add mysqld  //預設情況下沒有設定開機自啟動;新增到開機自啟動中
[root@localhost mysql]# chkconfig --list
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@localhost ~]# systemctl  start mysql.service 

//9、MySQL資料庫安全設定:
[root@localhost ~]# mysql_secure_installation
//10、登入mysql資料庫
[root@localhost ~]# mysql -uroot -p123456
Server version: 10.2.35
MariaDB [(none)]> status
UNIX socket:        /tmp/mysql.sock




知識點一:1、在虛擬機器下新增一塊空磁碟並建立邏輯卷(用來作為mysql資料庫存放生產資料的目錄)
//1、在虛擬機器下新增新磁碟;註冊新新增的磁碟:
[root@localhost ~]# echo '- - -' > /sys/class/scsi_host/host2/scan
[root@localhost ~]# lsblk
sdb      8:48   0   10G  0 disk 

//2、建立邏輯卷(建立PV)
[root@localhost ~]# pvcreate  /dev/sdb                      //sdb建立為物理卷pv
  Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# pvdisplay 
  "/dev/sdb" is a new physical volume of "60.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb

//3、把這塊盤新增到卷組裡面vg(建立vg)(新增到lv)
[root@localhost ~]# vgcreate vg0 /dev/sdb       
  Volume group "vg0" successfully created
[root@localhost ~]# lvcreate  -n lv_mysql  -l 100%FREE vg0   
                //建立邏輯卷,-n:為該邏輯卷命名為lv_mysql,   -l:指定大小,100%GREE:全部使用
[root@localhost ~]# lvs                  //可以檢視到該邏輯卷的大小
  LV       VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_mysql vg0 -wi-a----- <60.00g 
 
//4、建立檔案系統:
[root@localhost ~]# mkfs.xfs  /dev/vg0/lv_mysql   //將該邏輯卷格式化為.xfs檔案系統
[root@localhost ~]# blkid                         //對檔案系統型別查詢
/dev/mapper/vg0-lv_mysql: UUID="9f2bca6b-5748-497a-b6ea-4194b8dcd237" TYPE="xfs" 
 
//5、把建立好的邏輯卷掛載到一個目錄之下(掛載)
[root@localhost ~]# getent passwd mysql               //檢視mysql資料存放目錄位置
mysql:x:996:994::/data/mysqldb:/sbin/nologin
[root@localhost ~]# mkdir /data/
[root@localhost ~]# vim /etc/fstab                    //掛在的話還是需要寫到磁盤裡面,配置
UUID=9f2bca6b-5748-497a-b6ea-4194b8dcd237  /data/        xfs     defaults        0 0
//在vim下直接查詢  :r!blkid /dev/vg0/lv_mysql  該語句直接查詢它的UID

[root@localhost ~]# mount -a                                        //掛載
[root@localhost ~]# df      -h
/dev/mapper/vg0-lv_mysql  62879748   32992  62846756   1% /data

//6、建立生產資料存放目錄mysqdb
[root@localhost ~]# mkdir /data/mysqldb
知識點二:2、配置啟動程式指令碼:修改二進位制檔案,發現mysql程式目錄沒有讀寫許可權
 //1、我們配置huge.cnf環境程式,覆蓋到my.cnf我們的配置檔案
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf    
cp: overwrite ‘/etc/my.cnf’?y               //表示同意覆蓋

//2、編輯啟動程式配置檔案
[root@localhost mysql]# vim /etc/my.cnf     //修改我們的配置檔案
[client]
port            = 3306
socket          = /usr/local/mysql/mysql.sock           
// 配置在此位置,mysql目錄沒有給mysql使用者授予讀寫許可權,需要給mysql目錄授予msql使用者讀寫許可權。
// 或者也可以給它一個MySQL使用者可以寫的許可權的位置(預設位置為/tmp/mysql)

[mysqld]
port            = 3306
datadir         = /data/mysqldb             //新增生產資料儲存位置
socket          = /usr/local/mysql/mysql.sock   //更改mysql.sock檔案位置

//3、啟動時會報錯:
#問題現象:
[root@localhost ~]# systemctl  start mysql.service    
'/data/mysqldb/localhost.localdomain.err'               //錯誤日誌地址
#處理思路:
[root@localhost ~]# cat /data/mysqldb/localhost.localdomain.err 
[ERROR] Can't start server : Bind on unix socket: Permission denied      //許可權拒絕
[ERROR] Do you already have another mysqld server running on socket: 
/usr/local/mysql/mysql.sock ?      //沒有找到mysql.sock檔案
    
[root@localhost ~]# ss -tunlp       //查詢到3306埠未開啟,沒有程式監聽,
[root@localhost ~]# ll /usr/local/mysql/ -d   
                                    //檢視到/usr/local/mysql/資料夾沒有給mysql授予讀寫許可權
drwxrwxr-x 12 root root 282 Nov  3 02:30 /usr/local/mysql/         
#解決方案:
[root@localhost mysql]# setfacl -R -m  u:mysql:rwx  /usr/local/mysql/  
                        // -R:對任何資料都有寫許可權;  u:mysql:rwx  :針對使用者mysql有讀寫執行許可權;
[root@localhost mysql]# ll /usr/local/mysql/ -d
drwxrwxr-x+ 12 root root 4096 Nov  3 02:30 /usr/local/mysql/  
                                                        // x+   可以看到給mysql目錄授予了X+許可權 

[root@localhost mysql]# systemctl start mysqld.service     //現在可以正常啟動了
[root@localhost ~]# ss -tunlp       //此時可以看到3306埠了
 tcp    LISTEN     0      80         [::]:3306   users:(("mysqld",pid=118467,fd=21))

知識點三:3、配置啟動程式指令碼:修改二進位制檔案,發現安全指令碼找不到/tmp.my.sock檔案位置
//1、我們配置huge.cnf環境程式,覆蓋到my.cnf我們的配置檔案
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf    
cp: overwrite ‘/etc/my.cnf’?y               //表示同意覆蓋

//2、編輯啟動程式配置檔案
[root@localhost mysql]# vim /etc/my.cnf     //修改我們的配置檔案
[client]
port            = 3306
socket          = /usr/local/mysql/mysql.sock           
//在配置安全指令碼mysql_secure_installation時,預設是/tmp/mysql.sock下;
//更改目錄地址後相對應的也需要更改mysql_secure_installation指令碼配置資訊。

[mysqld]
port            = 3306
datadir         = /data/mysqldb             //新增生產資料儲存位置
socket          = /usr/local/mysql/mysql.sock   //更改mysql.sock檔案位置
//3、執行安全指令碼時報錯:
#問題現象:
[root@localhost ~]# mysql_secure_installation      //執行邊安全指令碼
 MySQL server through socket '/tmp/mysql.sock' 
                    //使用/tmp/mysql.sock檔案,我們之前配置是在/usr/local/mysql/mysql.sock
#解決思路:
[root@localhost ~]# less /usr/local/mysql/bin/mysql_secure_installation
                        //檢視該指令碼是不是定義了路徑
#解決方案:
[root@localhost ~]# vim /etc/my.cnf                 //更改mysql.sock檔案路徑
socket          = /tmp/mysql.sock 
socket          = /tmp/mysql.sock
[root@localhost my.cnf.d]# /usr/local/mysql/bin/mysqld --print-defaults
                        //可以檢視到他當時編譯時指定的路徑
/usr/local/mysql/bin/mysqld would have been started with the following arguments:
--port=3306 --datadir=/data/mysqldb --socket=/tmp/mysql.sock --skip-external-locking 
    --key_buffer_size=384M --max_allowed_packet=1M --table_open_cache=512 
        --sort_buffer_size=2M --read_buffer_size=2M --read_rnd_buffer_size=8M 
            --myisam_sort_buffer_size=64M --thread_cache_size=8 --query_cache_size=32M 
                --thread_concurrency=8 --log-bin=mysql-bin --server-id=1 

[root@localhost ~]# mysql_secure_installation       //此刻就可以正常執行了













Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor



來自為知筆記(Wiz)