1.下載、安裝 MySQL :
[root@localhost ~]# cd /usr/local/src [root@localhost src]# wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz [root@localhost src]# tar -zxvf mysql-5.1.40-linux-i686-icc-glibc23.tar.gz [root@localhost src]# mv mysql-5.1.40-linux-i686-icc-glibc23 /opt/mysql
創建 shell 爲 /sbin/nologin 的 mysql 用戶:
[root@localhost src]# useradd -s /sbin/nologin mysql [root@localhost src]# mkdir -p /data/mysql [root@localhost src]# chown -R mysql:mysql /data/mysql [root@localhost src]# cd /opt/mysql [root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
注:在這一步中,可能會報如下錯誤信息——
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1……
這是因爲缺少libaio 庫而導致 mysql_install_db 失敗,只要使用 yum 命令安裝後再次執行 mysql_install_db 即可:
[root@localhost mysql]# yum install -y libaio [root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql]# chmod 755 !$ [root@localhost mysql]# vim !$
修改其中的兩行,原內容分別如下:
basedir=
datadir=
修改後內容如下:
basedir=/opt/mysql
datadir=/data/mysql
保存退出。其中,basedir設置爲 MySQL 的安裝目錄,對於 MySQL 來說,它的默認安裝目錄爲/usr/local/mysql ,如果已經安裝到了該目錄下,則無需特意設置 basedir ,否則像本例中,將 MySQL 安裝到了/opt/mysql 下,basedir 則要設置爲 /opt/mysql 。同理,將 datadir 設置爲和前面 mysql_install_db 中對應的 /data/mysql 。
將 mysqld 添加到服務:
[root@localhost mysql]# chkconfig --add mysqld [root@localhost mysql]# chkconfig mysqld on
啓動 MySQL :
[root@localhost mysql]# service mysqld start
出現下列信息代表MySQL安裝完成,已經啓動:
Starting MySQL.SUCCESS!
最後,修改/etc/profile 文件,將 MySQL 下的 bin/ 目錄添加到 PATH 中:
[root@localhost mysql]# vim /etc/profile
export PATH=$PATH:/opt/mysql/bin
[root@localhost mysql]# source !$
這樣一來,以後我們在使用 MySQL 命令時都無需再使用絕對路徑了。
2.配置MySQL :
佔位,之後再來補充這部分內容,敬請期待。
3. MySQL 常用操作:
3.1 初次使用:
默認情況下,MySQL 的 root 用戶是沒有密碼的,我們在使用MySQL 前的第一件事就是爲其 root 用戶設置密碼:
[root@localhost ~]# mysqladmin -u root password 'newpasswd'
設置完成後,連接 MySQL 數據庫(使用 MySQL的 root 用戶登錄時可以省略 -u root):
[root@localhost ~]# mysql -uroot -p //等同於 mysql -p Enter password:
輸入剛剛設置的密碼即可登錄 root 用戶,可以執行如下常用操作:
查看都有哪些庫 show databases;
查看某個庫的表 use db; show tables;
查看錶的字段 desc tb;
查看建表語句 show create table tb;
當前是哪個用戶 select user();
當前庫 select database();
創建庫 create database db1;
創建表 create table t1 (`id` int(4),`name` char(40));
修改表名 rename table old_table_name to new_table_name;
查看數據庫版本 select version();
查看mysql狀態 show status;
修改mysql參數 show variables like 'max_connect%'; set global max_connect_errors = 1000;
查看mysql隊列 show processlist;
創建普通用戶並授權 grant all on *.* to user1 identified by'123456';
grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222';
grant all on db1.* to 'user3'@'%' identified by '231222';
更改密碼 update mysql.user set password=password("newpwd") where user='username' ; flush privileges;
查詢 select count(*) from mysql.user; select * from mysql.db; select * from mysql.db where host like'10.0.%';
插入 update db1.t1 set name='aaa' where id=1;
清空表 truncate table db1.t1;
刪除表 drop table db1.t1;
刪除數據庫 drop database db1;
修復表 repair table tb1 [use frm];
3.2 備份與恢復:
使用如下命令進行數據庫備份:
[root@localhost ~]# mysqldump -uroot -p dbname > db_bak.sql
使用如下命令進行數據庫恢復:
[root@localhost ~]# mysql -uroot -p dbname < db_bak.sql
恢復的前提是 dbname 庫在數據庫中存在,否則需要先創建dbname 庫。
除了上面提到的一次將整個數據庫備份下來,還可以一次只備份一個數據庫中的一張表,使用如下命令:
[root@localhost ~]# mysqldump -uroot -p dbname tabelname > tb_bak.sql
進行數據庫恢復時,與備份整個數據庫時相同:
[root@localhost ~]# mysql -uroot -p dbname < tb_bak.sql
恢復的前提也是 dbname 庫在數據庫中存在,而tablename 表不一定要存在。
在默認情況下,這種備份是帶有原數據庫 / 表中的數據的,如果只想備份表結構,只需要加上 -d 參數:
[root@localhost ~]# mysqldump -uroot -p -d dbname > db_structure_bak.sql
爲了避免備份 / 恢復時字符集不同可能導致的亂碼,可以在備份 / 恢復時指定字符集,使用 --default-character-set 參數:
[root@localhost ~]# mysqldump -uroot -p --default-character-set=utf8 dbname > db_bak.sql
[root@localhost ~]# mysql -uroot -p --default-character-set=utf8 dbname < db_bak.sql
3.3 忘記 MySQL 的密碼:
修改 /etc/my.cnf 文件:
[root@localhost ~]# vim /etc/my.cnf
在 [mysqld] 部分內容中添加如下內容:
skip-grant
保存退出,重啓 MySQL :
[root@localhost ~]# service mysqld restart
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!
之後可以直接以無密碼狀態進入 MySQL :
[root@localhost ~]# mysql -uroot //等同於 mysql
mysql> use mysql;update user u setu.password=password(‘newpassword’) from user u where u.user=’root’;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
之後再次修改 /etc/my.cnf 文件,將添加的skip-grant 選項刪除或者註釋掉,再次重啓 MySQL 即可:
[root@localhost ~]# service mysqld restart
補充:在知道現有密碼的情況下,如果想要改爲新密碼,不需要進入 MySQL 數據庫中執行 update語句來重置密碼,使用 mysqladmin 命令:
[root@localhost ~]# mysqladmin -uroot -p password 'newpasswd'
3.4 遠程連接MySQL:
默認情況下,MySQL 不允許遠程連接,如果想要遠程連接(如在本地 Navicat 或 MySQL Workbench 中連接 Linux 服務器中的 MySQL),需要在 MySQL下的mysql 數據庫裏的 user 表裏插入一條記錄:
INSERT INTO `mysql.user` VALUES ('%','root','*EBC18EC650950CEAF8ACD8525F17649CFF90AD98','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
其中,mysq.user 表中host 和user 兩個字段共同構成主鍵, host 設置爲 % 代表可以從遠程 host 連接。*EBC18EC650950CEAF8ACD8525F17649CFF90AD98代表加密後的密碼,其他 Y 對應相應權限(涉及 MySQL 具體知識),這裏暫且全部設置爲Y 。
重啓 MySQL ,即可通過 IP ,端口,用戶名,密碼進行遠程連接:
[root@localhost ~]# service mysqld restart
注:實際使用過程中我們不會選擇 insert 語句,因爲 MySQL 有自己的一套用戶管理命令,比如 create user 'newuser'@'%' identified by 'thepassword';用來創建用戶等,詳情可參考如下博客:
http://xitongjiagoushi.blog.51cto.com/9975742/1629990
本文出自 “細桶假狗屎” 博客,請務必保留此出處http://xitongjiagoushi.blog.51cto.com/9975742/1627864