MySQL經常使用操做mysql
更改root密碼linux
首先查看MySQL服務有沒有啓動:ps aux |grep mysqlsql
沒啓動把它啓動:/etc/init.d/mysqld startshell
而後用命令登陸mysql:mysql -uroot quit退出來數據庫
mysql命令是不能直接在root用戶下用的,由於他在/usr/local/mysql/bin/mysql目錄下,安全
須要更改環境變量PATH,增長mysql絕對路徑:export PATH=$PATH:/usr/local/mysql/bin/服務器
要想永久生效須要把它放到:vi /etc/profile 配置文件裏,放到最後邊socket
執行:source /etc/profile 環境變量才能生效ide
命令:mysql -uroot -p -p:指定他的密碼,若是密碼爲空直接回車就進來了ui
怎樣設置root密碼:
mysqladmin -uroot password '123456789' (例如咱們設12345789)
設置完密碼怎樣進入:
方法一:mysql -uroot -p 而後輸入設定的密碼,例123456789 -p參數意思是指定他的密碼
方法二:mysql -uroot -p '123456789' 直接給他指定上密碼
更改密碼:
例如咱們原來的密碼爲123456789改爲987654321,格式以下
mysqladmin -uroot password '123456789' password '987654321'
密碼重置
第一步,更改配置文件:vi /etc/my.cnf//增長skip-grant 意思是忽略受權,就是在操做mysql的時候省略輸入密碼這一步
第二步,重啓mysql服務:/etc/init.d/mysqld restart
第三步,登陸mysql輸命令:mysql -uroot 直接就進來來 不須要密碼
第四步,切換到mysql庫裏邊更改一個表:use mysql;
第五步,輸入命令:update user set password=password('aminglinux') where user='root'; 裏邊橫線部分aminglinux是你要設置的新密碼,更改完quit退出來
第六步,在編輯:vi /etc/my.cnf 把skip-grant去掉 由於一直加着它其餘用戶也不須要密碼這樣不安全
第七步,重啓:/etc/init.d/mysqld start
鏈接MySQL
方法有幾種:
1.鏈接本機:mysql -uroot -p123456 //-u用戶名;-p密碼
2.鏈接遠程
好比用A服務器去連接B服務器的mysql,須要輸入遠程的的IP、端口。
-h選項,遠程mysql的IP。-P選項,意思是指定端口
例如,用本機連3306端口:mysql -uroot -p123456 -h127.0.0.1 -P3306
3.利用socket來連接它,這種方法只適合在本機,由於mysql監聽的是3306端口跟socket。-S來指定它的socket
mysql -uroot -p123456 -S/tmp/mysql.sock
4.連接mysal以後來操做一些命令
mysql -uroot -p123456 -e 「show databases」 -e意思是把全部的數據庫都列出來,這種狀況使用在shell腳本里邊
MySQL經常使用命令
運行mysql的命令必需要先鏈接mysql,在mysql裏邊運行這些命令,在外邊是不能識別的,一樣外邊的命令在裏邊也不能識別。
進入mysql命令:mysql -uroot -p123456789
1.查詢庫:show databases
show databases;查看都有什麼數據庫
2.切換庫:use
use mysql;切換到某一個庫下邊,例如mysql庫
3.查看庫裏的表:
show tables;把全部表所有列出來
4.查看錶裏的字段:desc
desc user;後邊跟你要查詢的表,如desc user;
5.查看錶怎麼建立的:show create table
show create table user\G; 命令後邊跟你要查看的表,如user表,\G意思是它的豎排顯示
6.查看當前用戶:select user();
select user();由於默認登錄的是root
7.查看當前使用的數據庫:select database();
select database();
切換一下在查看
8.建立庫:create database ;
create database db1; (db1,是本身起的庫名字)
你發現多了一個db1
9.建立表:
先進入到庫裏邊use db1; 在建立表(例如建立一個叫t1的表):create table t1(`id` int(4), `name` char(40));
建立完表以後要給他定義字段,第一個字段叫id,格式爲init最長爲4。第二個字段叫name,char字符串,最長爲40
還能夠定義後邊的字段
10.刪除表:
drop table 後邊跟表的名字
11.查看當前數據庫版本:
select version();
12.查看數據庫狀態:show status;
13.查看各參數:show variables;
14.查看指定的參數
例如你想查看但記不清了,只知道前邊,那就能夠採用通配來匹配%,例如:show variables like 'max_connect%';
例如slow相關的
15.修改參數:
set global max_connect_errors=1000;例如修改max_connect_errors爲1000
16.查看隊列:
show processlist; 至關於在linux裏邊用ps或者top來查看進程,能夠看到哪些用戶在連它,用戶都在進行什麼操做,很重要
更完整的查看:show full processlist;
MySQL建立用戶以及受權
怎樣設置新用戶以及密碼
grant all on *.* to 'user1' identified by 'passwd'; user1是用戶;passwd意思是你本身設置的密碼
建立:grant all on *.* to 'user1'@'127.0.0.1' identified by 'passwd';
登陸:mysql -uuser1 -ppasswd -h127.0.0.1 由於他默認使用的socket,因此要指定-h
給他受權localhost這樣就不用-h指定IP了
grant all on *.* to 'user1'@'localhost' identified by 'passwd';
mysql -uuser1 -ppasswd
根據具體的權限去受權:grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd';
針對全部的IP去受權:grant all on db1.* to 'user3'@'%' identified by 'passwd';
查看全部的受權:show grants; 默認查看的是root,由於root沒有受權因此是空的
查看指定用戶的受權
須要指定用戶加IP:show grants for user2@192.168.133.1;
經常使用SQL語句
怎麼查看其它庫裏的表:select count(*) from mysql.user; 好比查看mysql庫裏的user表
查看庫裏全部的內容:select * from mysql.db; 這個*通常不要用,由於庫裏的東西有不少,耗費時間
查看一個字段:select db from mysql.db;
查看兩個字段:select db,user from mysql.db;
模糊查詢:select * from mysql.db where host like '192.168.%'\G;好比查詢以192.168.開頭的ip字段
插入內容數據:insert into db1.t1 values (1, 'abc');
name是個字符串儘可能要加的上單引號'',數字能夠不加
三行都生效:update db1.t1 set name='aaa' where id=1;
刪除指定id的表:delte from db1.t1 where id=1;
清空一個表:truncate table db1.t1; 只清空表裏的內容,而表裏的結構還留着。後邊跟表的名字例如db1庫裏的t1表
直接刪除表:drop table db1.t1;
把數據庫也刪了:drop database db1;
注意:刪除表和清空表的操做盡可能不要作!!!!!!!!!!!!!!!!!!
MySQL數據庫的備份與恢復
備份庫:mysqldump -uroot -p123456 mysql > /tmp/mysql.sql -u指定用戶;-p指定密碼;後邊跟你要備份的庫(如mysql),而後把內容重定向到一個文件裏,這個文件就咱們備份的庫文件
恢復庫 mysql -uroot -p123456 mysql < /tmp/mysql.sql
還能夠恢復到其餘的庫,好比mysql2,咱們先建立一個mysql2庫,命令:
mysql -uroot -paminglinux -e "create database mysql2"
而後再把它恢復過去
備份表 mysqldump -uroot -p123456 mysql user > /tmp/user.sql 在庫後邊加上表名字就行,先庫在表,例如mysql庫裏的user表
恢復表 mysql -uroot -p123456 mysql < /tmp/user.sql 只須要寫一個庫的名字就能夠,不須要跟表的名字
備份全部庫 mysqldump -uroot -p -A >/tmp/123.sql -A表示全部
只備份表結構 mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql