MySQL資料庫系統
MySQL安裝 (源碼包安裝)
解除安裝系統中已存在的MySQL的rpm版軟體
安裝前工作
安裝工具
yum install -y ncurses-devel cmake make gcc
gcc-c++
1.配置
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_SSL=system \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1 \
-DWITH_SSL=bundled
如果在配置的時候報錯,之後重新配置的時候需要清除緩存檔案,在接着安裝
rm -f CMakeCache.txt
2.make ; make install
mysql主配置檔案
/etc/my.cnf
在源碼包所在目錄的support-files目錄中有配置檔案的模闆,可以拷過去直接使用
cp support-files/my-medium.cnf /etc/my.cnf
更改安裝目錄權限,使mysql程式有權限管理
chown -R mysql.mysql /usr/local/mysql
更改PASH變量,友善管理mysql
export PATH=$PATH:/usr/local/mysql/bin/
(要永久生效可以寫在~/.bash_profile等配置檔案中)
将mysql加為系統程式,友善管理
在源碼包所在目錄的support-files目錄中有mysql的服務腳本檔案mysql.server
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
初始化mysql
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
(初始化腳本mysql_install_db位于安裝目錄的scripts檔案夾中,--user指定使用者,--ldata指定連結檔案,--basedi指定基本目錄, --datadir指定資料目錄)
因為配置時指定了-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock,可實際此檔案在/var/lib/mysql/mysql.sock目錄下,是以我要給它設定一個連結
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock
編輯服務腳本檔案/etc/init.d/mysqld檔案,指定安裝的目錄和資料檔案儲存檔案的目錄
vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/home/mysql
啟動mysql程式
service mysqld start
檢視程式是否啟動
netstat -anptu | grep mysqd
以上步驟做完後,mysql的安裝和初始化做好了,就可以使用了
登入資料庫
mysql -u root
-p:使用密碼
-h:登入遠端資料庫
修改mysql資料庫root密碼
mysqladmin -u root -p password '新密碼'需輸舊密碼
資料庫的提示符為mysql>,指令大小寫不敏感;且每個指令都以分号;号結尾,若沒以分号結尾,将代表指令沒有結束,隻是強制換行而已,等同于linux指令行中的\鍵。
下面是mysql環境下的一些指令
增加指令
CREATE DATABASE benet;建立benet資料庫
use benet; 進入benet資料庫
CREATE TABLE users(user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT ' ', PRIMARY KEY (user_name));建立表名為users,
user_name表示第1行名稱,“char(16)”表示類型為字元串,最大為16數值,“not null”表示值不能為空;user_passwd”表示第2行,DEFAULT ' ' 表示可以為空primary key(user_name)表示主鍵名
INSERT INTOusers(user_name,user_passwd) VALUES('zhangsan', PASSWORD('123456'));在users表中插入一條内容,如果插入的每個字段都包含内容,(user_name,user_passwd)可以省略
删除指令
DELETE FROM users WHERE user_name='lisi';
删除user表中lisi的内容
DROP FROM users; 删除user表中所有内容
DROP TABLE users;删除users表
DROP DATABASE benet;删除benet資料庫
更改指令
UPDATE mysql.user SETpassword=PASSWORD('123456') WHERE user='root';更改root的password值
檢視指令
show databases;檢視所有資料庫
use test; 進入test資料庫
show tables; 檢視資料中的表
describe user;檢視user表的資訊
select * from user; 檢視user表裡的内容
select user from user; 檢視user表裡的user這個使用者字段裡有哪些使用者
SELECT user,host,password FROM mysql.user WHERE user=''; 檢視mysql庫中user表中 user,host,password中user字段為空的行
使用者授權
GRANT select ON auth.* TO 'tom'@'localhost' IDENTIFIED BY '密碼'建立tom使用者,對其授權隻能查詢以auth開頭的所有表,或auth中的所有表,且隻能在localhost登陸,可以為IP
flush privileges; 重新整理授權資訊
備份與恢複
備份和恢複是在bash環境下執行,是linux指令,而不是在mysql環境下
備份
mysqldump -u root -p --opt --all-databases >all-data.sql
備份所有資料庫
mysqldump -u root -p --database benet > benet.sql
備份benet資料庫
還原
mysql -u root -p < all-data.sql
all-data.sql為備份的檔案,如果隻是某個資料庫的備份,可以在-p後面跟上資料庫名