一、下載tar包
wget -c http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.22.tar.gz/from/http://cdn.mysql.com/(我下載究極慢,幾K/S)
或者
用主機下載好後使用XFTP6遠程連接,直接把下載好的tar包複製到對應的linux目錄下
http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.22.tar.gz/from/http://cdn.mysql.com/
二、yum方式安裝相關依賴包**
yum -y install cmake bison git ncurses-devel gcc gcc-c++
三、創建一個用戶名爲mysql的用戶並加入mysql用戶組
groupadd mysql(創建用戶組)
useradd -g mysql mysql(創建用戶名屬mysql用戶組)
四、解壓mysql-5.6.38.tar.gz,並且創建mysql安裝目錄和數據庫文件存放目錄
cd /Downloads(你剛纔存放的tar壓縮包位置)
tar zxvf mysql-5.6.38.tar.gz (解壓)
mkdir /usr/local/mysql(創建一個解壓的目錄,喜歡就好)
mkdir /usr/local/mysql/data(創建目錄)
cd mysql-5.6.38/(跳轉目錄)
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 -DMYSQL_USER=mysql -DENABLE_DOWNLOADS=1
(配置,注意上面編譯的選擇路徑要和你前面創建好的目錄一致,不然你上面mkdir就無意義了)
make(編譯)
make install(安裝)
五、創建MySQL Server系統表
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql(把初始化生成的 /usr/local/mysql/my.cnf 配置文件的屬主數組更改爲mysql)
六、配置
配置環境變量
先使用find / -name mysql 查看下lib的位置,我的lib位置是 /usr/lib64/mysql
vi /etc/profile
在後面加上
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
export PATH
注意了 上面的lib要換成你find結果lib的地址
變量生效
source /etc/profile
文件配置
find / -name my.cnf
(查看mysql的配置文件在哪裏,可能有兩個my.cnf,刪掉其中一個,我的是在/etc/my.cnf和/etc/mysql/mycnf,因爲我安裝在/etc下,所有刪掉rm /etc/my.cnf yes)
最終my.cnf環境配置在最後面
七、某些命令使用命令
systemtctl status mysql(mysql狀態)
systemtctl start mysql(開始)
systemtctl stop mysql(停止)
systemtctl restart mysql(重啓)
netstat -ntlp(查看端口網絡狀態)
八、用戶密碼設置
設置賬號密碼
mysql -uroot -p
mysql> select * form mysql.user\G;
(查詢所有用戶信息,\G是顯示方式)
(如果查詢結果不出來,把安全模式關掉)
mysql> quit
在my.cnf中把safe-updates更改爲safe-updates=0
記得重啓才能生效
systemctl restart mysql
mysql -uroot -p
(再次進入mysql)
mysql> select * form mysql.user\G;
發現所有root用戶都沒有密碼(順便發現一些user表中空賬號。。)
給root添加密碼
mysql> UPDATE user SET Password=PASSWORD('密碼') where USER='root';
mysql> FLUSH PRIVILEGES;
添加個普通用戶吧,畢竟root特權用戶太強悍
只能進行本地連接的超級用戶,
mysql> create user '用戶名'@'127.0.0.1' identified by '密碼’;
mysql> grant all privileges on *.* to '用戶名''@'127.0.0.1' identified by '密碼' with grant option;
mysql> flush privileges;
- ALL PRIVILEGES 是表示所有權限,你也可以使用select、update等權限。
- ON 用來指定權限針對哪些庫和表
- *.*中前面的*用來指定數據庫名,顯然是所有,後面的*用來指定表名。
- ‘用戶名’@‘localhost’
表示jack用戶,@後面接限制的主機,可以是IP、IP段、域名以及%,%表示任何地方。注意:這裏%有的版本不包括本地,以前碰到過給某個用戶設置了%允許任何地方登錄,但是在本地登錄不了,這個和版本有關係,遇到這個問題再加一個localhost的用戶就可以了。 - IDENTIFIED BY 指定用戶的登錄密碼。
- WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權限授權給別人。注意:經常有人在創建操作用戶的時候不指定WITH
GRANT OPTION選項導致後來該用戶不能使用GRANT命令創建用戶或者給其它用戶授權。
順便刪除空用戶名…
mysql> delete from user where user='';
mysql> flush privileges;
mysql > SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;(查看所有用戶及其權限)
九、my.cnf配置附加說明
\# For advice on how to change settings please see
\# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
\# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
\# *** default location during install, and will be replaced if you
\# *** upgrade to a newer version of MySQL.
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
\# 一般配置選項
basedir = /etc/mysql
datadir = /etc/mysql/data
port = 3306 #端口
socket = /tmp/mysql.sock
character-set-server=utf8
back_log = 300
max_connections = 1000
max_connect_errors = 50
table_open_cache = 4096
max_allowed_packet = 32M
#binlog_cache_size = 4M
max_heap_table_size = 128M
read_rnd_buffer_size = 16M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 16
query_cache_size = 128M
query_cache_limit = 4M
ft_min_word_len = 8
thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
#log-bin=mysql-bin
long_query_time = 6
server_id=1
innodb_buffer_pool_size = 512M
innodb_thread_concurrency = 16
innodb_log_buffer_size = 16M
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = on
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
default-character-set=utf8
safe-updates=1
[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
[client]