多學一點(六)——在Linux下安裝配置MySQL

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章