一、MySQL介紹
MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下公司。MySQL 最流行的關系型資料庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體之一。
mysql是什麼
mysql就是一個基于socket編寫的C/S架構的軟體
用戶端軟體
mysql自帶:如mysql指令,mysqldump指令等
python子產品:如pymysql
資料庫管理軟體分類
分兩大類:
關系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql語句通用
非關系型:mongodb,redis,memcache
可以簡單的了解為:
關系型資料庫需要有表結構
非關系型資料庫是key-value存儲的,沒有表結構
二、下載下傳安裝
Linux版本
#二進制rpm包安裝
yum -y install mysql-server mysql
源碼安裝見:http://www.cnblogs.com/linhaifeng/articles/7126847.html
Window版本
#1、下載下傳:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/
#2、解壓
如果想要讓MySQL安裝在指定目錄,那麼就将解壓後的檔案夾移動到指定目錄,如:C:mysql-5.7.16-winx64
#3、添加環境變量
【右鍵計算機】--》【屬性】--》【進階系統設定】--》【進階】--》【環境變量】--》【在第二個内容框中找到 變量名為Path 的一行,輕按兩下】 --> 【将MySQL的bin目錄路徑追加到變值值中,用 ; 分割】
#4、初始化
mysqld --initialize-insecure
#5、啟動MySQL服務
mysqld # 啟動MySQL服務
#6、啟動MySQL用戶端并連接配接MySQL服務
上一步解決了一些問題,但不夠徹底,因為在執行【mysqd】啟動MySQL伺服器時,目前終端會被hang住,那麼做一下設定即可解決此問題,即将MySQL服務制作成windows服務
注意:--install前,必須用mysql啟動指令的絕對路徑
# 制作MySQL的Windows服務,在終端執行此指令:
"c:mysql-5.7.16-winx64inmysqld" --install
# 移除MySQL的Windows服務,在終端執行此指令:
"c:mysql-5.7.16-winx64inmysqld" --remove
注冊成服務之後,以後再啟動和關閉MySQL服務時,僅需執行如下指令:
# 啟動MySQL服務
net start mysql
# 關閉MySQL服務
net stop mysql
三、MySQL啟動與檢視
linux平台下檢視
[root@egon ~]# systemctl start mariadb #啟動
[root@egon ~]# systemctl enable mariadb #設定開機自啟動
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@egon ~]# ps aux |grep mysqld |grep -v grep #檢視程序,mysqld_safe為啟動mysql的腳本檔案,内部調用mysqld指令
mysql 3329 0.0 0.0 113252 1592 ? Ss 16:19 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 3488 0.0 2.3 839276 90380 ? Sl 16:19 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
[root@egon ~]# netstat -an |grep 3306 #檢視端口
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
[root@egon ~]# ll -d /var/lib/mysql #權限不對,啟動不成功,注意user和group
drwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql
You must reset your password using ALTER USER statement before executing this statement.
安裝完mysql 之後,登陸以後,不管運作任何指令,總是提示這個
mac mysql error You must reset your password using ALTER USER statement before executing this statement.
解決方法:
step 1: SET PASSWORD = PASSWORD('your new password');
step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
step 3: flush privileges;
windows平台到服務中檢視即可
三、登入設定密碼
初始狀态下,管理者root,密碼為空,預設隻允許從本機登入localhost
設定密碼
[root@egon ~]# mysqladmin -uroot password "123" 設定初始密碼 由于原密碼為空,是以-p可以不用
[root@egon ~]# mysqladmin -uroot -p"123" password "456" 修改mysql密碼,因為已經有密碼了,是以必須輸入原密碼才能設定新密碼
指令格式:
[root@egon ~]# mysql -h172.31.0.2 -uroot -p456
[root@egon ~]# mysql -uroot -p
[root@egon ~]# mysql 以root使用者登入本機,密碼為空
初始狀态下,管理者root,密碼為空,預設隻允許從本機登入localhost
設定密碼
[root@egon ~]# mysqladmin -uroot password "123" 設定初始密碼 由于原密碼為空,是以-p可以不用
[root@egon ~]# mysqladmin -uroot -p"123" password "456" 修改mysql密碼,因為已經有密碼了,是以必須輸入原密碼才能設定新密碼
指令格式:
[root@egon ~]# mysql -h172.31.0.2 -uroot -p456
[root@egon ~]# mysql -uroot -p
[root@egon ~]# mysql 以root使用者登入本機,密碼為空
三、破解密碼
linux平台下,破解密碼的兩種方式
方法一:删除授權庫mysql,重新初始化
[root@egon ~]# rm -rf /var/lib/mysql/mysql #所有授權資訊全部丢失!!!
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql
方法二:啟動時,跳過授權庫
[root@egon ~]# vim /etc/my.cnf #mysql主配置檔案
[mysqld]
skip-grant-table
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql
MariaDB [(none)]> update mysql.user set password=password("123") where user="root" and host="localhost";
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> q
[root@egon ~]# #打開/etc/my.cnf去掉skip-grant-table,然後重新開機
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql -u root -p123 #以新密碼登入
windows平台下,5.7版本mysql,破解密碼的兩種方式:
方式一
#1 關閉mysql
#2 在cmd中執行:mysqld --skip-grant-tables
#3 在cmd中執行:mysql
#4 執行如下sql:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges;
#5 tskill mysqld #或taskkill -f /PID 7832
#6 重新啟動mysql
方式二
#1. 關閉mysql,可以用tskill mysqld将其殺死
#2. 在解壓目錄下,建立mysql配置檔案my.ini
#3. my.ini内容,指定
[mysqld]
skip-grant-tables
#4.啟動mysqld
#5.在cmd裡直接輸入mysql登入,然後操作
update mysql.user set authentication_string=password('') where user='root and host='localhost';
flush privileges;
#6.注釋my.ini中的skip-grant-tables,然後啟動myqsld,然後就可以以新密碼登入了
四、統一字元編碼
強調:配置檔案中的注釋可以有中文,但是配置項中不能出現中文
#在mysql的解壓目錄下,建立my.ini,然後配置
#1. 在執行mysqld指令時,下列配置會生效,即mysql服務啟動時生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1
#解壓的目錄
basedir=E:mysql-5.7.19-winx64
#data目錄
datadir=E:my_data #在mysqld --initialize時,就會将初始資料存入此處指定的目錄,在初始化之後,啟動mysql時,就會去這個目錄裡找資料
#2. 針對用戶端指令的全局配置,當mysql用戶端指令執行時,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123
#3. 隻針對mysql這個用戶端的配置,2中的是全局配置,而此處的則是隻針對mysql這個指令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=egon
password=4573
#!!!如果沒有[mysql],則使用者在執行mysql指令時的配置以[client]為準
統一字元編碼
#1. 修改配置檔案
[mysqld]
default-character-set=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#mysql5.5以上:修改方式有所改動
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#2. 重新開機服務
#3. 檢視修改結果:
s
show variables like '%char%'