mysql for linux 數據庫的安裝過程
l 安裝版本:mysql-advanced-5.6.12-linux-glibc2.5-x86_64.tar.gz ,此版本是綠色版本,只需要將其解壓到相關目錄即可。
PS:此安裝方法為不針對特定平台的通用安裝方法,使用的二進制文件是后綴為.tar.gz的壓縮文件
PS:Mysql下載地址:http://pan.baidu.com/s/1eQJhoLO
1、創建mysql用戶/賬號
[root@inmscj10 ~]# groupadd mysql --增加組
[root@inmscj10 ~]# useradd -m -s/bin/bash -d/home/mysql -gmysql mysql --增加用戶並指定用戶位置,路徑,用戶組
[root@inmscj10 ~]# passwd mysql --修改密碼
[root@inmscj10 ~]#
2、創建目錄
l 為了好管理,將mysql統一安裝在一個固定的目錄/home/下,將解壓后的mysql重命名為mysql
[root@inmscj10 ~]# mkdir -p /home/
[root@inmscj10 ~]# tar -zxvf mysql-advanced-5.6.12-linux-glibc2.5-x86_64.tar.gz
[root@inmscj10 ~]# mv mysql-advanced-5.6.12-linux-glibc2.5-x86_64 /home/mysql
l 在主目錄下面創建一個logs目錄,用戶存放mysql的日志文件。
[root@inmscj10 mysql]# mkdir logs
l 對相關目錄進行授權
[root@inmscj10 ~]#cd /home/mysql/
[root@inmscj10 mysql]#chown -R root *
[root@inmscj10 mysql]#chown -R mysql data
[root@inmscj10 mysql]#chgrp -R mysql *
3、初始化數據庫
mysql的原始配置文件可以在support-files中找到
my-default.cnf,這個是mysql的參數文件,通常這個文件都會被重新命名為my.cnf,放入/home/mysql目錄下。
[root@inmscj10 support-files]# cp my-default.cnf /home/mysql/my.cnf
l 修改my.cnf文件,加入以下內容:
[mysqld]
# port=33060 --指定端口 默認取 3306
basedir = /home/mysql --安裝根目錄
datadir = /home/mysql/data --數據庫存儲路徑
socket = /tmp/mysql.sock
log-error=/home/mysql/mysql_error.log
skip-name-resolve
character_set_server=utf8 --數據庫默認字符集
#init_connect='set names utf8'
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# lower_case_table_names = 1 --數據庫、表名區分大小配置 1為不區分大小寫,注釋掉默認區分大小寫
max_allowed_packet = 32M
table_open_cache = 1024
sort_buffer_size = 4M
join_buffer_size = 2M
net_buffer_length = 8M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
thread_cache_size = 300
query_cache_size = 1024M
query_cache_limit = 2M
thread_concurrency = 8
wait_timeout = 315360000
max_connections = 300
max_connect_errors=1844674407370954751
max_connect_errors = 10000
#event_scheduler=1
#innodb_log_file_size=256M
innodb_buffer_pool_size = 4094M
innodb_additional_mem_pool_size = 32M
innodb_log_file_size = 1024M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_thread_concurrency=8
#innodb_sort_buffer_size=32M
innodb_open_files=4096
innodb_write_io_threads=2
innodb_read_io_threads=2
innodb_max_dirty_pages_pct = 90
innodb_file_per_table=1
[client]
socket=/tmp/mysql.sock
default-character-set=utf8
l 進入script目錄
[root@inmscj10 mysql]# cd scripts/
[root@inmscj10 scripts]# ./mysql_install_db --defaults-file=/home/mysql/my.cnf --datadir=/home/mysql/data --basedir=/home/mysql
--指定my.cnf 的讀取路徑,否則默認讀取/etc/my.cnf 。指定數據庫存儲路徑/home/mysql/data
注:該處一定要指定數據庫文件存放的路徑,否則后面啟動過程中會報錯。
4、配置文件的修改、
l 修改環境配置,在.bash_profile 修改添加
PATH=$PATH:$HOME/bin:/home/mysql/bin
export PATH=$PATH:/home/mysql/bin
l 在 /etc/security/limits.conf 添加下列行,修改賬號資源限制(按需配置)
mysql soft nproc 65536
mysql hard nproc 65536
mysql soft nofile 65536
mysql hard nofile 65536
l 修改后重啟腳本與查看修改情況
[mysql@gdcs1 java]$ source /etc/security/limits.conf
[mysql@gdcs1 java]$ ulimit -a
open files (-n) 65536
max user processes (-u) 65536
PS:如需具體了解linux ulimit請參考:http://blog.csdn.net/wanghai__/article/details/6332540
l mysql.server,這個文件是mysql的服務文件,通常這個文件被重新命名為mysql或mysqld,放入/etc/rc.d/init.d/目錄下面
[root@inmscj10 support-files]# cp mysql.server /etc/rc.d/init.d/mysqld
編輯該文件,修改對於的目錄為正確的目錄,如下
basedir=/home/mysql
datadir=/home/mysql/data
這樣設置以后就可以用service mysqld start/stop來啟動關閉mysql服務。
注:也可以 /etc/rc.d/init.d/mysqld start 來進行啟動數據庫;
5、數據庫服務啟動
進入mysql的主目錄:
[root@inmscj10 mysql]# ./bin/mysqld_safe --defaults-file=/home/mysql/my.cnf --user=mysql &
--初始化數據庫,指定my.cnf 的讀取路徑,否則默認讀取/etc/my.cnf
啟動服務命令:
[root@inmscj10 mysql01]# service mysqld restart
或 [root@inmscj10 mysql01]# /etc/rc.d/init.d/mysqld start
啟動服務后,通過ps命令可以查看數據庫的目錄結構情況:
[root@inmscj10 mysql01]# ps -ef | grep mysql
--若有進程說明數據庫已啟動,若無說明數據庫沒啟動;該描述為重點,可以迅速排查定位工具連接異常;
[root@inmscj10 mysql01]# netstart -a |grep 3306
-- 用戶查詢mysql 3306 端口是否有被監聽;
對相關目錄進行授權
[root@inmscj10 ~]#chown mysql:mysql /home/mysql/ -R
--若mysql服務啟動失敗報錯,檢查權限,會有報錯導致服務啟動異常,起不來;
6、數據庫用戶配置
1)root用戶設置密碼
[root@inmscj10 ~]# mysqladmin -u root password 'mysql'
2)數據登錄
[root@inmscj10 ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.48-community MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
3)給root用戶配置遠程訪問權限,設置后可通過客戶連接。
mysql> GRANT ALL PRIVILEGES on *.* to 'root'@'%' identified by 'illusioned';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4)增加一個develop的新用戶並賦予所有權限
mysql> GRANT ALL PRIVILEGES ON *.* TO develop@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;
給新用戶遠程登錄操作權限
mysql> GRANT ALL PRIVILEGES on *.* to 'develop'@'%' identified by '123456';(賦予遠程操作權限)
給新用戶本地登錄操作權限
mysql> GRANT ALL PRIVILEGES on *.* to 'develop'@'localhost' identified by '123456'; (賦予本地操作權限)
7、參數的設置與修改
mysql的的參數修改與設置有兩種方法,一是通過修改參數文件(master.cnf)完成,參數文件有時候不完全,不存在的參數需要手工增加,但是修改參數文件的可能需要重啟數據庫才能生效;二是通過set命令來完成,這種情況不需要重啟。
通過show VARIABLES LIKE '....'來查看參數情況,如下:
mysql> show VARIABLES LIKE 'character%';
部分參數查看及設置如下:
1)開啟事件調度
set global event_scheduler =1;
2)查看是否支持分區
show variables like '%partition%';
有的版本無法用此參數查看分區,則用下面語句。
show plugins;
確認partition是否為active狀態
| partition | ACTIVE | STORAGE ENGINE | NULL | PROPRIETARY |
3)查看調度任務創建情況
show events;
4)查看字符集
show variables like '%character%';
臨時改變字符集
set names utf8
5)查看MYSQL打開文件數限制
show variables like 'open%';
show global status like 'open_%';
8、問題
問題一:
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
FATAL ERROR: Could not find ./bin/my_print_defaults
問題原因:在初始化數據庫的時候使用了默認路徑安裝數據庫,但實際上配置文件已經修改了相關的數據庫文件路徑。
解決方法:如果改變了數據文件存放的目錄,務必指定datadir位置
[root@inmscj10 scripts]# ./mysql_install_db --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data &
問題二:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
問題原因:一些mysql安裝將mysql.sock放在了/var/lib/mysql沒有了下面,一些mysql放在了/tmp下面。由於以前機器上面已經安裝了一個mysql客戶端,mysql.sock位置不一樣。
解決方法:在參數文件my.cnf中指定mysql.sock參數的路徑。
[mysqld]
socket=/var/lib/mysql.sock
問題三:
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
問題原因:可能的原因是安裝了數據庫后,沒有設置root密碼;或者某些操作不當造成的。
解決方法:執行如下語句。
利用kill語句先停掉數據庫服務,執行,
[root@inmscj10 mysql01]#.bin/mysqld_safe ./bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
[root@inmscj10 mysql01]#.mysql -u root
mysql> use mysql
mysql> update user set password=PASSWORD(cattsoft) where user='root'
mysql> flush privileges;
mysql> quit;
重啟數據庫服務
問題四:
[ERROR] Plugin 'InnoDB' init function returned error.
問題原因:由於數據庫初始化過程中少加了參數等一系列其他原因造成。
解決方法:刪除MySQL目錄下的ib_logfile0和ib_logfile1兩個文件即可。