2013年5月31日星期五

尺寸按表信息與MySQL




了解你的數據的大小,當然是有幫助的。 該工具已成為多年來與不同版本的MySQL更容易,但它是東西無論你應該檢查你的MySQL版本。

如果您運行的是舊版本的MySQL(INFORMATION_SCHEMA前),那麼你仍然可以收集這些數據,使用“顯示表狀態添加到index_length DATA_LENGTH。” INFORMATION_SCHEMA使得這個容易得多,但您可以自由使用,只要你喜歡。

利用尋呼機命令收集信息後。
[world]> pager egrep -h "Data_length|Index_length"
PAGER set to 'egrep -h "Data_length|Index_length"'
使用節目表狀態命令來收集相關信息:
[world]> show table status like 'City'\G
Data_length: 409600
Index_length: 131072
1 row in set (0.00 sec)
復位尋呼機:
[world]> pager
Default pager wasn't set, using stdout. 
工作台尺寸= DATA_LENGTH + Index_length的
[world]> select 409600 + 131072 as Table_Size;
+------------+
| Table_Size |
+------------+
540672 |
+------------+ 

相同的信息可以通過INFORMATION_SCHEMA:

SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE,SUM(DATA_LENGTH+INDEX_LENGTH) AS size,SUM(INDEX_LENGTH) AS index_size
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA IN ('world') AND TABLE_NAME IN ('City') AND ENGINE IS NOT NULL
GROUP BY TABLE_SCHEMA, TABLE_NAME

TABLE_SCHEMA: world
TABLE_NAME: City
ENGINE: InnoDB
size: 540672
index_size: 131072
1 row in set (0.00 sec) 


點,關注和知道你的數據。

2013年5月30日星期四

MySQL 4.1中 - 請升級



經常有人問一個MySQL DBA,以幫助各種版本的MySQL。 

SELECT VERSION();
+----------------+
| VERSION() |
+----------------+
| 4.1.18-classic |
+----------------+ 
不過,我求求你... 評估你的選擇和升級。

MySQL已經取得了眾多的安全更新更不用說性能更新的問題。 檢查你的MySQL版本。 如果是一個不低於5.569年5月1日在一個大的彈力請升級。

雖然你可能會考慮你的數據庫的“工作”,可用於升級,當它打破...... 這將需要一些工作... 是。 從長遠來看它會為您節省.. 是。 你會得到更多您的系統... 是的...... 你可以利用固定的錯誤... 是。 你願意成為一個安全漏洞的“破”?

停止想了一會兒,你會說什麼的CEO,當CEO問你為什麼要砍死?

看看您的系統免受已知的安全 漏洞:

4.1


採取的所有新版本的優勢:

2013年5月19日星期日

MySQL的用戶::資助:: mysql_config_editor ::保安

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-users-grants-mysqlconfigeditor.html

安全對數據庫的訪問是任何數據庫管理員可能優先頭號。 如果不是,那麼你需要認真研究一下為什麼它是不是。 

已經可以通過手動的一般準則: 


MySQL中的主要安全問題之一當然是給你的用戶的權限。 
這些都是一些簡單的指引。 

首先“超級用戶”或“根”賬戶保持到最低限度。 用戶完全訪問“GRANT ALL”將仍然可以訪問,當你已經達到你的最大連接。 所以你想的最後一件事是一個程序,一個具有完全訪問權限的用戶執行命令。 

請記住,您正在創建什麼類型的帳戶。 您可以限制用戶最大查詢,最大的更新,最大連接數和每小時的最大用戶連接 。 

請記住您的用戶連接的網絡環境。 如果用戶將要使用DHCP的網絡地址在同一子網內,你只是為自己創造更多的工作,如果你限制到一個單一的IP。 您仍然可以限制他們的子網雖然帶有通配符。 例如'192 .168.0.2'與'192 .168.0% 

遠離整個通配符的主機和用戶的訪問。 



> CREATE USER ''@'192.168.0.56' ;
Query OK, 0 rows affected (0.02 sec)

> show grants for ''@'192.168.0.56';
+-----------------------------------------+
| Grants for @192.168.0.56 |
+-----------------------------------------+
| GRANT USAGE ON *.* TO ''@'192.168.0.56' |
+-----------------------------------------+


這將使你敞開,任何人從192.168.0.56是不是一個聰明的安全的事情。 
它也違反其他帳戶,因為MySQL從192.168.0.56首先檢查主機的用戶名和第二。 


> GRANT SELECT ON test.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY 'somepassword';

> show grants for 'exampleuser'@'192.168.0.%';
+----------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@192.168.0.% |
+----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'192.168.0.%' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT ON `test`.* TO 'exampleuser'@'192.168.0.%' |
+----------------------------------------------------------------------------------------------------------------------+

這將允許只選擇為exampleuser從'192 .168.0%。 您還必須牢記,如果exam​​pleuser的是從本地主機連接,該系統將可能用戶本地主機之前,先192.168.0。%的子網地址,除非用戶使用的子網地址主機連接。 

這意味著,你可以創建一個每個主機的不同權限的用戶名和密碼。 


> SHOW GRANTS FOR 'exampleuser'@'localhost';
+--------------------------------------------------------------------------------------------------------------------+
| Grants for exampleuser@localhost |
+--------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'exampleuser'@'localhost' IDENTIFIED BY PASSWORD '*DAABDB4081CCE333168409A6DB119E18D8EAA073' |
| GRANT SELECT, UPDATE, DELETE ON `test`.* TO 'exampleuser'@'localhost' |
+--------------------------------------------------------------------------------------------------------------------+

你最好不要通過mysql客戶端使用中 - password = <密碼>選項。 您可以使用-p來提示輸入密碼。 

您也可以選擇與MySQL 5.6中使用MySQL的配置實用程序 。 


# mysql_config_editor set --login-path=local --host=localhost --user=root --password
Enter password: 




# mysql_config_editor print --all
[local]
user = root
password = *****
host = localhost 


#mysql的
ERROR 1045(28000):拒絕訪問用戶'根'@'localhost'的(使用密碼:否)

#mysql的 - 登錄路徑=當地
歡迎到MySQL監視器。

#mysql的 - 登錄路徑=本地-E“SELECT NOW()';

你有不同的路徑,例如本地或遠程等選項來命名。 所以,你可以在你的〜加密多個接入用戶帳戶,一旦您使用set命令創建/ mylogin.cnf文件。 

如果你有使用mysql客戶端的shell腳本,並有可能再有密碼的腳本更新他們使用“ -登錄路徑=”是一種更安全的路要走。 


當然,當你不再需要的用戶... 刪除用戶。 


> DROP USER 'exampleuser'@'localhost'; 

一個較小的ibdata文件

Original post: http://anothermysqldba.blogspot.com/2013/05/a-smaller-ibdata-file.html

我所看到的ibdata文件較小的慾望來了最近在forums.mysql.com 

InnoDB數據庫使用的ibdata文件(S)的數據庫中的數據存儲到磁盤。 正確地配置您的系統是關鍵,在這裡你可以學到更多有關該等購股權:http://dev.mysql.com/doc/refman/5.6/en/innodb-configuration.html 

InnoDB提供ACID兼容和交易安全的存儲引擎,它是非常有成效的,但如果要刪除和/或經常更換數據,隨著時間的推移,你將需要恢復丟失的空間。 多少時間取決於您的系統上使用。 您不能運行一個簡單的命令,並恢復空間的ibdata文件中。 它將採取一些步驟,它不是從服務器上的,除非做幕後工作。 如果你有一個奴隸,它最好是做這項工作的從屬數據庫上先規劃旋轉,數據庫服務器成為主數據庫。 

所以,兩種不同的情況,這些都不是唯一的解決辦法,但一些解決方案: 


  • 你要保持的ibdata文件相同的大小,但你只想清除浪費的空間
恢復丟失的空間的最佳方式是將數據轉儲並重新加載它。 是的,不是我知道一個DBA的首選。這是比較麻煩的,你的數據庫是更大的。 我希望你有一個從數據庫,可以做到這一點,然後關閉奴隸使其主後。 


  1. 備份數據庫
    1. mysqldump --user=<username> --password=<> --add-drop-database --master-data=2 --triggers --routines --events --databases (list database names and do not add mysql to this list) > /Just_AN_example/mysqldump_<DATEHERE>_.sql
      1. 這給了你一份ASCII副本以防萬一二進制腐敗。
      2. 如果需要的話,它還具有主數據通過評論。
      3. 這將讓你的mysql認證以及機智。
        1. 我想保存的mysql數據庫作為轉儲分開。
    2. 您還可以創建一個備份MySQL企業備份Percona的XtraBackup ,如果系統是一個更大的數據庫,並需要聯機備份,這些都是不錯的選擇。 給你們使用的各種原因。
  2. 校驗和數據庫。
    1. 收集一些數字,你有什麼這樣你可以比較它,當你加載它。
      1. Percona的工具包,這是可以做到

        1. # ./pt-table-checksum --password=<Password> > checksum_before_dump.txt
      2. 查詢時,你可以自己寫。
        1. 這一點,我有一個博客文章
          1. http://anothermysqldba.blogspot.com/2013/05/mysql-checksum.html
  3. 停止/啟動數據庫並利用停機時間,任何只讀變量,你想調整
  4. 裝入數據庫


  1. 上面列出的過程中,按照步驟1至2。
  2. 在上述過程的步驟4中,您會希望您的my.cnf文件中添加以下。
    1. innodb_file_format =酷魚
    2. innodb_file_per_table的= 1
  3. 刪除的ibdata文件和日誌。
    1. 從這個角度沒有回來
  4. 啟動數據庫
  5. 確認它是啟動和運行
  6. 加載備份數據庫。

當然,這將是最好的非生產/從服務器上,這樣你就可以確認所有的步驟,讓自己一個可行的情況,然後旋轉奴隸成為新的主。

MySQL的校驗

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-checksum.html


校驗表是有用的信息,當你正在檢查一個表的狀態。 這通常被用來之前和之後的備份和恢復,以確保數據是完整的。

下面是一個簡單的方式來使用它通過MySQL命令行工具已經提供給您。


mysql> CREATE USER 'checksumuser'@'localhost';
mysql>GRANT SELECT ON *.* TO 'checksumuser'@'localhost';


mysql>SELECT
CONCAT('mysql --user=checksumuser -e \'CHECKSUM TABLE ',TABLE_SCHEMA,'.',TABLE_NAME ,' EXTENDED\'; ') as cmd_line_query
INTO OUTFILE '/tmp/checksums.sh'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('mysql', 'INFORMATION_SCHEMA')
AND ENGINE IS NOT NULL
GROUP BY TABLE_SCHEMA, TABLE_NAME;

mysql> exit


# chmod +x /tmp/checksums.sh
# /tmp/checksums.sh > /tmp/checksums_b4dump.sql 

現在,你將有你所有的校驗數據提供給您列出的文件。 簡單的例子,下面的數據


Table Checksum
world.City 2011482258
Table Checksum
world.Country 580721939
Table Checksum
world.CountryLanguage 1546017027 


後傾或進程正在運行,你可以運行同一個腳本更改輸出文件,然後將其加載,並比較結果。 它是不是最乾淨的方法,但它是一個容易為你做快速檢查。

# /tmp/checksums.sh > /tmp/checksums_after_dump.sql


mysql> use test
mysql> CREATE TABLE `checksums` (
`checksums_id` int(11) NOT NULL AUTO_INCREMENT,
table_name varchar(100) DEFAULT NULL,
size_a int(11) DEFAULT NULL,
size_b int(11) DEFAULT NULL,
PRIMARY KEY (`checksums_id`)
) ENGINE=InnoDB ;

LOAD DATA INFILE '/tmp/checksums_b4dump.sql'
IGNORE INTO TABLE checksums
(table_name, size_a);

LOAD DATA INFILE '/tmp/checksums_after_dump.sql'
IGNORE INTO TABLE checksums
(table_name, size_b);

DELETE FROM checksums WHERE table_name = 'Table';

SELECT a.table_name , a.size_a, b.size_b
FROM checksums a
INNER JOIN checksums b ON a.table_name = b.table_name and a.checksums_id != b.checksums_id
WHERE a.size_a IS NOT NULL AND b.size_b IS NOT NULL ;
+-----------------------------------------------------------------------+------------+------------+
| table_name | size_a | size_b |
+-----------------------------------------------------------------------+------------+------------+
| world.City | 2011482258 | 2011482258 |
| world.Country | 580721939 | 580721939 |
| world.CountryLanguage | 1546017027 | 1546017027 |
+-----------------------------------------------------------------------+------------+------------+


#mysql -p
mysql> DROP USER 'checksumuser'@'localhost'; 

完成後, 不要忘記刪除用戶 。

2013年5月15日星期三

MySQL的計數,並選擇從一個分區

Original post: http://anothermysqldba.blogspot.com/2013/05/mysql-count-and-select-from-partition.html

MySQL論壇上有一個問題,對如何計算每個分區的行。 
我想通它將使一個良好的博客文章。 

首先,這些分區審查和至少讓你開始有一些很好的鏈接。 這些網頁使用的例子在這裡參考的例子開始。 


> CREATE TABLE t2
-> (
-> dt DATE
-> )
-> PARTITION BY RANGE (TO_DAYS(dt))
-> (
-> PARTITION p01 VALUES LESS THAN (TO_DAYS('2007-01-01')),
-> PARTITION p02 VALUES LESS THAN (TO_DAYS('2008-01-01')),
-> PARTITION p03 VALUES LESS THAN (TO_DAYS('2009-01-01')),
-> PARTITION p04 VALUES LESS THAN (MAXVALUE));

> desc t2;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| dt | date | YES | | NULL | |
+-------+------+------+-----+---------+-------+ 

INSERT INTO t2 VALUES ('2007-02-02'),('2008-02-02'),('2009-02-02'),(CURDATE());
Query OK, 4 rows affected (0.04 sec)


OK所以現在我們可以選擇從分區以及指望從他們.. 

> select count(*) from t2;
+----------+
| count(*) |
+----------+
| 4 |
+----------+ 

> explain partitions select count(*) from t2 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: t2
partitions: p01,p02,p03,p04
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 5
Extra: NULL

>選擇* T2分區(P02);
+ ------------ +
DT |
+ ------------ +
| 2007-02-02 |
+ ------------ +


>選擇* T2分區(P04);
+ ------------ +
DT |
+ ------------ +
| 2009-02-02 |
2013年5月15日| |
+ ------------ +

> SELECT * FROM T2分區(P02,P04);
+ ------------ +
DT |
+ ------------ +
| 2007-02-02 |
| 2009-02-02 |
2013年5月15日| |
+ ------------ +

> SELECT COUNT(*)從t2的分區(P04);
+ ---------- +
| COUNT(*)|
+ ---------- +
| 2 |
+ ---------- +


希望這會有所幫助。

2013年5月14日星期二

MariaDB的10.0.2檢查

Original post: http://anothermysqldba.blogspot.com/2013/05/checking-out-mariadb-1002.html


我下載了MariaDB的10.0.2源碼包,並做了一個自定義安裝。 我這樣做是因為以前的帖子 ,我有2個已建成的主人。 這一次,我刪除的圓形複製他們指出這MariaDB的安裝。 我使用的端口3310。 剛才投入MariaDB的10.0.2文件夾相同的安裝配置的例子,從以前的帖子會在這裡適用。我在這篇文章的底部增加了安裝,以防萬一,你想要它。

我之所以這樣做是因為我想檢查出的最新MariaDB的功能主要有以下幾種:
多源複製

確保你有不同的IDS服務器設置每台服務器開始。

剛開始,所以沒有在這裡應該預期
> select @@default_master_connection;
+-----------------------------+
| @@default_master_connection |
+-----------------------------+
| |
+-----------------------------+ 

因此,收集信息,從主服務器
> show master status\G
*************************** 1. row ***************************
File: percona_mysql-bin.000005
Position: 107 


現在更新MariaDB的10.0.2從
SET @@default_master_connection='percona';

CHANGE MASTER 'percona' TO MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = 3307 ,
MASTER_LOG_FILE = 'percona_mysql-bin.000005',
MASTER_LOG_POS = 107 



> select @@default_master_connection;
+-----------------------------+
| @@default_master_connection |
+-----------------------------+
| percona |
+-----------------------------+

OK現在讓我加第二個主
SET @@default_master_connection='oracle';

CHANGE MASTER 'oracle' TO MASTER_HOST = '127.0.0.1',
MASTER_USER = 'root',
MASTER_PASSWORD = '',
MASTER_PORT = 3309 ,
MASTER_LOG_FILE = 'oracle_mysql-bin.000009',
MASTER_LOG_POS = 5453 


接下來,您可以檢查狀態,以確保兩個設定都設了。
>SHOW ALL SLAVES STATUS\G

*************************** 1. row ***************************
Connection_name: oracle
Slave_SQL_State:
Slave_IO_State:
Master_Host: 127.0.0.1
Master_User: root
Master_Port: 3309
Connect_Retry: 60
Master_Log_File: oracle_mysql-bin.000009
Read_Master_Log_Pos: 5453
Relay_Log_File: relay-bin-oracle.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: oracle_mysql-bin.000009
Slave_IO_Running: No
Slave_SQL_Running: No
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 5453
Relay_Log_Space: 248
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: 0
Retried_transactions: 0
Max_relay_log_size: 1073741824
Executed_log_entries: 0
Slave_received_heartbeats: 0
Slave_heartbeat_period: 1800.000
Gtid_Pos:
*************************** 2. row ***************************
Connection_name: percona
Slave_SQL_State:
Slave_IO_State:
Master_Host: 127.0.0.1
Master_User: root
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: percona_mysql-bin.000005
Read_Master_Log_Pos: 107
Relay_Log_File: relay-bin-percona.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: percona_mysql-bin.000005
Slave_IO_Running: No
Slave_SQL_Running: No
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 248
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: 0
Retried_transactions: 0
Max_relay_log_size: 1073741824
Executed_log_entries: 0
Slave_received_heartbeats: 0
Slave_heartbeat_period: 1800.000
Gtid_Pos: 

確定的時間開始

> START ALL SLAVES;
Query OK, 0 rows affected, 2 warnings (0.00 sec)

root@localhost [(none)]> show warnings;
+-------+------+-------------------------+
| Level | Code | Message |
+-------+------+-------------------------+
| Note | 1937 | SLAVE 'percona' started |
| Note | 1937 | SLAVE 'oracle' started |
+-------+------+-------------------------+ 



Relay_Master_Log_File: percona_mysql-bin.000005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Relay_Master_Log_File: oracle_mysql-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes


因此,讓我們測試一些情況。

通過Percona的主
use test;
CREATE TABLE `multi_test` (
`time_recorded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB; 

MariaDB的奴隸
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| multi_test |
+----------------+ 

通過Oracle MySQL主
use test;
CREATE TABLE `multi_test2` (
`time_recorded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB; 

MariaDB的奴隸
> show tables;
+----------------+
| Tables_in_test |
+----------------+
| multi_test |
| multi_test2 |
+----------------+ 

確定工作!


SHOW解釋
這是相當直線前進,但因為它是運行很高興趕上查詢,。
> show explain for 17;
+------+-------------+--------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+--------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | sbtest | range | PRIMARY | PRIMARY | 4 | NULL | 99 | Using where |
+------+-------------+--------+-------+---------------+---------+---------+------+------+-------------+
1 row in set, 1 warning (0.00 sec)

root@localhost [test]> show warnings;
+-------+------+----------------------------------------------------------+
| Level | Code | Message |
+-------+------+----------------------------------------------------------+
| Note | 1003 | SELECT SUM(K) from sbtest where id between 4997 and 5096 |
+-------+------+----------------------------------------------------------+ 


便箋:


Cassandra的存儲引擎
我很好奇,關於這一點,它涉及如何通過memcache的NoSQL和Innodb的解決方案。
我有一個後,在這裡: http://anothermysqldba.blogspot.com/2013/04/nosql-php-memcache-innodb-mysql.html

我會回來的這一點,因為我在我的環境中成立卡桑德拉。 我並不渴望,但好奇。


用戶反饋插件
文檔“快速啟動”添加到下的my.cnf文件的[mysqld]
[mysqld]
feedback=ON
port = 3310
socket = /tmp/mariadb-10.0.2.sock

130513 17:45:10 InnoDB: 10.0.2-MariaDB started; log sequence number 20183690
130513 17:45:10 [ERROR] /usr/local/mariadb-10.0.2/bin/mysqld: unknown variable 'feedback=ON' 

這個工作輕鬆了很多,想到這樣一旦我刪除了“快速啟動”的指示。
> INSTALL PLUGIN feedback SONAME 'feedback.so';

> SELECT plugin_status FROM information_schema.plugins WHERE plugin_name = 'feedback';
+---------------+
| plugin_status |
+---------------+
| ACTIVE |
+---------------+ 


通過錯誤日誌中,你也可以看到它的工作:

[注意事項]反饋插件:發送報告'http://mariadb.org/feedback_plugin/post'
[注]反饋插件:服務器回答說'OK'



總體而言,我目前最喜歡的增強:



基本安裝是這樣的:
# Preconfiguration setup
shell> groupadd mariadb
shell> useradd -r -g mariadb mariadb

# Beginning of source-build specific instructions
shell> tar zxvf MariaDB-VERSION.tar.gz
shell> cd MariaDB-VERSION
shell> cmake .
shell> make
shell> make install DESTDIR="/usr/local/mariadb-10.0.2-tmp"
# End of source-build specific instructions

Build files have been written to: /usr/local/src/MySQL/MariaDB/10.0.2/mariadb-10.0.2

I do not like the results
-- Installing: /usr/local/mariadb-10.0.2-tmp/usr/local/mysql/
If DESTDIR is should install into that location not start with user under that location. This is a MySQL original issue as it does this with all versions of MySQL.

# Fix the odd/bug setup
shell> cd /usr/local/mariadb-10.0.2-tmp
shell> mv usr/local/mysql/ ../mariadb-10.0.2 ;
shell> cd ../; # rm -Rf mariadb-10.0.2-tmp

# Postinstallation setup
shell> cd /usr/local/mariadb-10.0.2
shell> chown -R mariadb .
shell> chgrp -R mariadb .

# Next command is optional
shell> cp support-files/my-small.cnf /etc/mariadb-10.0.2.cnf
shell> vi /etc/mariadb-10.0.2.cnf
port = 3310
socket = /tmp/mariadb-10.0.2.sock

shell> scripts/mysql_install_db --defaults-file=/etc/mariadb-10.0.2.cnf --basedir=/usr/local/mariadb-10.0.2 --skip-name-resolve --datadir=/var/lib/mariadb-10.0.2 --user=mariadb
shell> chown -R mariadb /var/lib/mariadb-10.0.2/*

shell> # bin/mysqld_safe --defaults-file=/etc/mariadb-10.0.2.cnf --user=mariadb --datadir=/var/lib/mariadb-10.0.2/ --port=3310 &


shell> # ./bin/mysql --port=3310 --socket=/tmp/mariadb-10.0.2.sock
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.0.2-MariaDB Source distribution

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.