1. 程式人生 > >linux下搭建資料庫mysql

linux下搭建資料庫mysql

《二》安裝Mysql

建立日誌目錄

修改vi /etc/my.cnf
my.cnf檔案配置
檢視mysql服務的socket檔案位置:find / -name mysql.sock

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

啟用慢查詢日誌

slow_query_log = 1

如果查詢時間長於“long_query_time”設定的值,那就把此查詢查詢到“slow_query_log_file”檔案中

long_query_time = 1

slow_query_log_file = /home/log/mysqllog/log.log

定義錯誤日誌檔案

log_error = /home/log/mysqllog/log.log

relay_log_recovery=0

建立新表時將使用的預設儲存引擎

default-storage-engine=INNODB

lower_case_table_names=1

max_allowed_packet=16M

定義二進位制日誌檔案

log-bin=/home/log/mysqllog/mysql-bin

每一次事件提交就使日誌同步到磁碟,預設“sync_binlog=0”,表示讓系統自己來flush使在記憶體的日誌>刷到磁碟,設定為“1”是一種安全的設定,因為當系統crash時你最多丟失一個事件,但相反會增加系統的


IO,即使這樣也建議設定成“1”

sync_binlog = 1

二進位制日誌的格式修改成“row”

binlog_format=row

設定伺服器ID號

server-id =61

slave-skip-errors=all

sql_mode config detail:http://tech.it168.com/a2012/0822/1388/000001388401.shtml

sql_mode=”STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

[client]

default-character-set=utf8

socket=/tmp/mysql.sock

設定伺服器ID(1到232-1),不能重複,用ip最後一段,測試機從200開始,正式機從50,100開始

重點注意,如果是新資料庫需要複製其他資料庫的資料,server-id不能再用原來的id

參考http://www.cnblogs.com/gomysql/p/5852607.html

server-id = 209

所有日誌檔案改到日誌目錄/home/log/mysqllog

mkdir /home/log/mysqllog

mkdir /home/log/mysqllog/mysql-bin

修改mysql日誌資料夾許可權

cd /home/log/mysqllog

chown -R mysql:mysql ./

建立log.log

vi /home/log/mysqllog/log.log

chown -R mysql:mysql /home/log/mysqllog/log.log

chmod 777 /home

chmod 777 /home/log

chmod 777 /home/log/mysqllog/log.log

chgrp -R mysql /home/log/mysqllog

mysql包匯入/usr/local/下
刪除/usr/local/mysql/data下的所有東西

chmod -R 777 /usr/local/mysql

會報錯確實libaio.so.1包:yum install libaio*

執行:vi /etc/ld.so.conf
新增:/usr/lib

儲存後,在命令列終端執行:/sbin/ldconfig -v
(其作用是將檔案/etc/ld.so.conf列出的路徑下的庫檔案快取到/etc/ld.so.cache以供使用,因此當安裝完一些庫檔案,或者修改/etc/ld.so.conf增加了庫的新搜尋路徑,需要執行一下ldconfig,使所有的庫檔案都被快取到檔案/etc/ld.so.cache中,如果沒做,可能會找不到剛安裝的庫。)

建立mysql服務(mysql_install_db被棄用了):/usr/local/mysql/bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

啟動mysql服務:/usr/local/mysql/bin/mysqld_safe –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data &

出錯

[[email protected] bin]# ./mysqladmin -uroot -p password

Enter password: //這裡輸入上面的v:gNXSw5FTkw

New password: //重新輸入新密碼

Confirm new password: //重新輸入新密碼

#############################

mysql -uroot -p

在日誌中找到初始密碼

/home/log/mysqllog/

/usr/local/mysql/data/

##########################################
(可能出現問題,可用如下設定空白密碼的方法重置密碼)
2.修改MySQL的登入設定:

vi /etc/my.cnf

在[mysqld]的段中加上一句:skip-grant-tables

停止mysqld;

/usr/local/mysql/bin/mysqld_safe stop

(可能有其它的方法,總之停止mysqld的執行就可以了)

檢視mysql服務
ps -ef|grep mysql

kill -9 程序(強制關閉)

用以下命令啟動MySQL,以不檢查許可權的方式啟動;

/usr/local/mysql/bin/mysqld_safe –skip-grant-tables

然後用空密碼方式使用root使用者登入 MySQL;

mysql -u root

修改root使用者的密碼;

5.7版本下的mysql資料庫下已經沒有password這個欄位了,password欄位改成了authentication_string

mysql> update mysql.user set authentication_string=PASSWORD(‘Atnsmi.com’) where User=’root’;

mysql> flush privileges;

mysql> quit

##########################################

SET PASSWORD FOR [email protected]= PASSWORD(‘testadmin’);

給指定ip連線資料庫許可權:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.69.6.163' IDENTIFIED BY 'admin' WITH GRANT OPTION;

**重新設定一次密碼:SET PASSWORD = PASSWORD('testadmin');**

配置Mysql開機啟動服務star

將服務檔案拷貝到init.d下,並重命名為mysql

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

賦予可執行許可權:chmod +x /etc/init.d/mysqld

新增服務:chkconfig –add mysqld

顯示服務列表:chkconfig –list

如果看到mysql的服務,並且3,4,5都是on的話則成功,如果是off,則鍵入

chkconfig –level 345 mysql on

重啟電腦:reboot

驗證:netstat -na | grep 3306

配置Mysql開機啟動服務end

收回許可權:revoke ALL PRIVILEGES ON . from ‘root’@’172.69.6.163’;

flush privileges;

在主伺服器上建立擁有複製許可權的帳戶:

mysql –uroot -p

mysql>
GRANT replication slave,replication client ON *.* TO 'repuser'@'172.69.1.244' IDENTIFIED BY 'repadmin';

FLUSH PRIVILEGES;

SHOW MASTER STATUS; #記錄下當前主伺服器所使用的二進位制檔案及position

防火牆埠配置:
vi /etc/sysconfig/iptables

sudo systemctl start [email protected]:1.service