玩轉mysql源碼安裝

1.首先下載mysql源碼

wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz

2.解壓

3../configure --prefix=/usr/local/mysql/ --localstatedir=/usr/local/mysql/data --without-debug --with-unix-socket-path=/tmp/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=gbk,gb2312,utf8 --with-pthread

注意:如果報sql_udf.o:undefined in glibc的話,做如下調整:

export CFLAGS="-O2 -DHAVE_DLOPEN=1"
export CXXFLAGS="-O2 -DHAVE_DLOPEN=1"

./configure --prefix=/usr/local/mysql/ --localstatedir=/usr/local/mysql/data --without-debug --with-unix-socket-path=/tmp/mysql.sock  --with-extra-charsets=gbk,gb2312,utf8 --with-pthread


編譯參數解釋:
--prefix=/usr/local/mysql/:指定安裝位置
--localstatedir=/usr/local/mysql/data:指定數據庫文件位置
--without-debug:禁用調用模式
--with-unix-socket-path=/tmp/mysql.sock:指定sock文件位置
--with-client-ldflags=-all-static:
--with-mysqld-ldflags=-all-static:以純靜態方式編譯服務端和客戶端
--enable-assembler:使用一些字符函數的彙編版本
--with-extra-charsets=gbk,gb2312,utf8 :gbk,gb2312,utf8字符支持
--with-pthread:強制使用pthread庫(posix線程庫)

4.make && make install

5.cp support-files/my-medium.cnf /etc/my.cnf //複製配置文件夾my.cnf

6./usr/local/mysql/bin/mysql_install_db --user=mysql  //初始化數據庫

7.cp support-files/mysql.server /etc/rc.d/init.d/mysqld  //init啓動腳本

8.如果第6步驟沒有配置--user或者--user是啓動用戶名,執行service mysqld start    出錯:Starting MySQL. ERROR! Manager of pid-file quit without updating file.

9.解決錯誤方法:chown -R mysql /usr/local/mysql/data 

10.[root@localhost support-files]# ./mysql.server start
Starting MySQL. SUCCESS! 

11.修改密碼:

/usr/local/mysql/bin/mysqladmin -u root password '新密碼'  

12.登錄並且刪除匿名用戶:

/usr/local/mysql/bin/mysql -u root -p

Enter password:

mysql> show databases;

mysql> use mysql; 
Database changed

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.00 sec)

mysql> delete from user where user='';      
Query OK, 2 rows affected (0.00 sec)

mysql> quit
Bye

這是匿名用戶, 默認從本地是可以用匿名用戶登錄, 但是用匿名用戶登錄, 只能看到test庫。刪完了別忘了重啓啊!!!!

13.重啓mysqld:service mysqld restart

14.Q&A

(1)mysql安裝的時候,有一步是mysql_install_db --user=mysql,必須這樣嗎?

答:<1>.生成授權表實際上是完成了mysql的初始化。你在執行這個腳本之後,mysql裏就會出現名爲mysql的庫。mysql庫裏有常用的權限表等系統表。比如設置用戶權限的user表。
<2>.後面的參數--user所指定的用戶是你想要運行mysqld進程用戶名。這個是可變的,不一定非要是mysql。設置這個用戶以後,所有通過mysqld進程創建的文件都會屬於這個用戶。網上的教程裏多用mysql用戶是爲了在生產環境中更方便管理。

(2)那mysql目錄以及其下的所有文件所有者都必須是mysql嗎?這是必要的麼?還有所屬組?

答:這個不是必須的。但是組最好設定爲mysql組。在進行權限管理時方便管理。
linux系統默認用戶(比如root)也是可以的。但是在生產環境中,一般只需要將日誌的路徑(配置文件中日誌的路徑),和數據文件路徑(datadir參數)設置爲mysql用戶就可以了。(這個不同的公司也有不同的設置,但是簡單來說是這樣的。)
上面說的其實都是linux系統權限管理的內容。有些文件,比如你不希望其他用戶看到的文件,或者只有指定用戶可寫的文件,就可以設定成某個特殊用戶。至於你後面問的所屬組的問題。這個也是權限管理的一部分。比如說,一個文件的用戶權限是root,組權限是mysql,這樣的文件就只能root用戶和mysql組裏的用戶訪問。

(3)那是不是說即使不設置用戶和所屬組,也不影響使用?

答:是的。不設置也並不影響使用。因爲linux默認用戶是root。mysql的基本權限就都涵蓋了。
因此可以這樣理解:用戶和用戶組的作用一般是爲了在生產過程中進行系統級的權限管理。

個人觀點:會有影響,啓動時會報錯入第8條那樣。

發佈了103 篇原創文章 · 獲贊 12 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章