python入門開發(fā)學(xué)習(xí)筆記之MySQL安裝和基本原理

本節(jié)重點

  • 掌握mysql的安裝、啟動、破解密碼、統(tǒng)一字符編碼

本節(jié)時長需控制在15分鐘內(nèi)

一、MySQL介紹

MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下公司。MySQL 最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。

mysql是什么

mysql就是一個基于socket編寫的C/S架構(gòu)的軟件

客戶端軟件
  mysql自帶:如mysql命令,mysqldump命令等
  python模塊:如pymysql

數(shù)據(jù)庫管理軟件分類

分兩大類:
  關(guān)系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql語句通用
  非關(guān)系型:mongodb,redis,memcache

可以簡單的理解為:
    關(guān)系型數(shù)據(jù)庫需要有表結(jié)構(gòu)
    非關(guān)系型數(shù)據(jù)庫是key-value存儲的,沒有表結(jié)構(gòu)

二、下載安裝

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、添加環(huán)境變量
【右鍵計算機】--》【屬性】--》【高級系統(tǒng)設(shè)置】--》【高級】--》【環(huán)境變量】--》【在第二個內(nèi)容框中找到 變量名為Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中,用 ; 分割】

#4、初始化
mysqld --initialize-insecure

#5、啟動MySQL服務(wù)
mysqld # 啟動MySQL服務(wù)

#6、啟動MySQL客戶端并連接MySQL服務(wù)
mysql -u root -p # 連接MySQL服務(wù)器

上一步解決了一些問題,但不夠徹底,因為在執(zhí)行【mysqd】啟動MySQL服務(wù)器時,當(dāng)前終端會被hang住,那么做一下設(shè)置即可解決此問題,即將MySQL服務(wù)制作成windows服務(wù)

注意:--install前,必須用mysql啟動命令的絕對路徑
# 制作MySQL的Windows服務(wù),在終端執(zhí)行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install

# 移除MySQL的Windows服務(wù),在終端執(zhí)行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove

注冊成服務(wù)之后,以后再啟動和關(guān)閉MySQL服務(wù)時,僅需執(zhí)行如下命令:
# 啟動MySQL服務(wù)
net start mysql

# 關(guān)閉MySQL服務(wù)
net stop mysql

三、MySQL啟動與查看

linux平臺下查看

[root@egon ~]# systemctl start mariadb #啟動
[root@egon ~]# systemctl enable mariadb #設(shè)置開機自啟動
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的腳本文件,內(nèi)部調(diào)用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 #權(quán)限不對,啟動不成功,注意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平臺到服務(wù)中查看即可

三、登錄設(shè)置密碼

初始狀態(tài)下,管理員root,密碼為空,默認只允許從本機登錄localhost
設(shè)置密碼
[root@egon ~]# mysqladmin -uroot password "123"        設(shè)置初始密碼 由于原密碼為空,因此-p可以不用
[root@egon ~]# mysqladmin -uroot -p"123" password "456"        修改mysql密碼,因為已經(jīng)有密碼了,所以必須輸入原密碼才能設(shè)置新密碼

命令格式:
[root@egon ~]# mysql -h172.31.0.2 -uroot -p456
[root@egon ~]# mysql -uroot -p
[root@egon ~]# mysql                    以root用戶登錄本機,密碼為空

三、破解密碼

linux平臺下,破解密碼的兩種方式

方法一:刪除授權(quán)庫mysql,重新初始化

[root@egon ~]# rm -rf /var/lib/mysql/mysql #所有授權(quán)信息全部丟失?。?!
[root@egon ~]# systemctl restart mariadb
[root@egon ~]# mysql

方法二:啟動時,跳過授權(quán)庫

[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 關(guān)閉mysql
#2 在cmd中執(zhí)行:mysqld --skip-grant-tables
#3 在cmd中執(zhí)行:mysql
#4 執(zhí)行如下sql:
update mysql.user set authentication_string=password('') where user = 'root';
flush privileges;

#5 tskill mysqld #或taskkill -f /PID 7832
#6 重新啟動mysql

方式二

#1\. 關(guān)閉mysql,可以用tskill mysqld將其殺死
#2\. 在解壓目錄下,新建mysql配置文件my.ini
#3\. my.ini內(nèi)容,指定
[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,然后就可以以新密碼登錄了

四、統(tǒng)一字符編碼

強調(diào):配置文件中的注釋可以有中文,但是配置項中不能出現(xiàn)中文

#在mysql的解壓目錄下,新建my.ini,然后配置
#1\. 在執(zhí)行mysqld命令時,下列配置會生效,即mysql服務(wù)啟動時生效
[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時,就會將初始數(shù)據(jù)存入此處指定的目錄,在初始化之后,啟動mysql時,就會去這個目錄里找數(shù)據(jù)

#2\. 針對客戶端命令的全局配置,當(dāng)mysql客戶端命令執(zhí)行時,下列配置生效
[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],則用戶在執(zhí)行mysql命令時的配置以[client]為準(zhǔn)

統(tǒng)一字符編碼

#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\. 重啟服務(wù)
#3\. 查看修改結(jié)果:
\s
show variables like '%char%'
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)庫概述1 什么是數(shù)據(jù)(Data) 描述事物的符號記錄稱為數(shù)據(jù),描述事物的符號既可以是數(shù)字,也可以是文字、圖片,...
    牛奶加醋閱讀 544評論 0 0
  • 數(shù)據(jù)庫簡介 什么是數(shù)據(jù)庫(DataBase,簡稱DB) 數(shù)據(jù)庫,又稱為數(shù)據(jù)管理系統(tǒng),簡而言之可視為電子化的文件柜—...
    VV木公子閱讀 266評論 0 1
  • 1. 原始單據(jù)與實體之間的關(guān)系 可以是一對一、一對多、多對多的關(guān)系。在一般情況下,它們是一對一的關(guān)系:即一張原始單...
    趙客縵胡纓v吳鉤霜雪明閱讀 798評論 0 7
  • 數(shù)據(jù)庫概念:文件作為數(shù)據(jù)庫,數(shù)據(jù)格式千差萬別 將保存數(shù)據(jù)的地方統(tǒng)一起來 MySQL:用于管理文件的一個軟件(兩個程...
    一個無趣的人W閱讀 259評論 0 0
  • mysql介紹 mysql是一個·關(guān)系型數(shù)據(jù)庫管理系統(tǒng)mysql,最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在web應(yīng)用方面m...
    _Caesar閱讀 734評論 0 5

友情鏈接更多精彩內(nèi)容