安裝編譯源碼所需的工具和庫html
yum install gcc gcc-c++ ncurses-devel perlmysql
安裝cmake(安裝在/usr/local/src目錄)linux
wget https://cmake.org/files/v3.4/cmake-3.4.2.tar.gz(下載cmake)c++
tar xzvf cmake-3.4.2.tar.gz (解壓)sql
cd cmake-3.4.2.tar.gz (進入目錄)數據庫
./bootstrap ; bootstrap
make ; bash
make install (安裝)服務器
make uninstall(卸載)socket
cd ~(返回系統根目錄)
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.17.tar.gz
tar zxvf mysql-5.6.17.tar.gz
cd mysql-5.6.17
從mysql5.5起,mysql源碼安裝開始使用cmake了,設置源碼編譯配置腳本。
-DCMAKE_INSTALL_PREFIX=dir_name | 設置mysql安裝目錄 |
-DMYSQL_UNIX_ADDR=file_name | 設置監聽套接字路徑,這必須是一個絕對路徑名。默認爲/tmp/mysql.sock |
-DDEFAULT_CHARSET=charset_name | 設置服務器的字符集。 缺省狀況下,MySQL使用latin1的(CP1252西歐)字符集。cmake/character_sets.cmake文件包含容許的字符集名稱列表。 |
-DDEFAULT_COLLATION=collation_name | 設置服務器的排序規則。 |
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 |
存儲引擎選項: MyISAM,MERGE,MEMORY,和CSV引擎是默認編譯到服務器中,並不須要明確地安裝。 靜態編譯一個存儲引擎到服務器,使用-DWITH_engine_STORAGE_ENGINE= 1 可用的存儲引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema) |
-DMYSQL_DATADIR=dir_name | 設置mysql數據庫文件目錄 |
-DMYSQL_TCP_PORT=port_num | 設置mysql服務器監聽端口,默認爲3306 |
-DENABLE_DOWNLOADS=bool | 是否要下載可選的文件。例如,啓用此選項(設置爲1),cmake將下載谷歌所使用的測試套件運行單元測試。 |
設置編譯參數
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
編譯安裝
make && make install
注:須要從新運行配置,須要刪除CMakeCache.txt文件
再次設置編譯參數
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1
再次編譯源碼
make && make install
新增mysql用戶組
groupadd mysql
新增mysql用戶
useradd -s /sbin/nologin -g mysql mysql(/sbin/nologin表示用戶不能夠登陸,能夠經過mysql登陸,-g mysql表是爲mysql分組添加用戶mysql)
usermod -s /sbin/nologin -g mysql mysql(表示爲mysql用戶,重設置分組和登陸)
修改mysql數據庫目錄
把mysql安裝文件(除了data)的主人都改成root,避免數據庫恢復爲出廠設置
chown -R root /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/data
賦予目錄權限
chmod -R 777 /usr/local/mysql(Starting MySQL... ERROR! The server quit without updating PID file )
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
注:若是/etc/my.cnf文件存在,則覆蓋。
linux下讀取my.cnf順序
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf
--defaults-extra-file->~/my.cnf
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig mysqld on
service mysqld restart
netstat -tulnp | grep 3306
mysql -u root -p(全局可用)
密碼爲空,若是能登錄上,則安裝成功。
進入mysql數據庫
/usr/local/mysql/bin/mysql
查看數據庫
show databases;
選擇mysql數據庫
use mysql;
查看用戶
select Host,User,Password from user;
+-----------+------+----------+
| Host | User | Password |
+-----------+------+----------+
| localhost | root | |
| niaoyun | root | |
| 127.0.0.1 | root | |
| ::1 | root | |
| localhost | | |
| niaoyun | | |
+-----------+------+----------+
刪除匿名帳號
select Host,User,Password from user where User = '';
delete from user where User = '';
select Host,User,Password from user where Host!='localhost';
delete from user where Host!='localhost';
設置密碼
update user set Password = password('root') where Host='localhost';
flush privileges;
@前面的mysql表示用戶名,%表示全部的電腦均可以鏈接,也能夠設置某個ip地址運行鏈接,雙引號裏面的123456表示密碼
grant ALL PRIVILEGES on *.* to mysql@"%" Identified by "123456" WITH GRANT OPTION;
Linux系統MySQL開啓遠程鏈接
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
/etc/init.d/iptables status
問題:
Starting MySQL..The server quit without updating PID file ([FAILED]/mysql/Server03.mylinux.com.pid).
解決:
修改/etc/my.cnf 中datadir,指向正確的mysql數據庫文件目錄
問題:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
解決:
新建一個連接或在mysql中加入-S參數,直接指出mysql.sock位置。
ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
/usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock
MySQL問題解決:-bash:mysql:command not found
由於mysql命令的路徑在/usr/local/mysql/bin下面,因此你直接使用mysql命令時,
系統在/usr/bin下面查此命令,因此找不到了
解決辦法是: 作個連接便可
ln -s /usr/local/mysql/bin/mysql /usr/bin