最近租用了低配版的VPS,系統(tǒng)CentOS6.10 X64,1核512M內(nèi)存。
系統(tǒng)默認(rèn)安裝python2.6.6,我需要使用python3。遂安裝,記錄安裝過程。
查看當(dāng)前操作系統(tǒng)內(nèi)核信息
uname -a
顯示結(jié)果
#Linux Vultr.guest 3.10.0-862.3.2.el7.x86_64 #1 SMP Mon May 21 23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
查看centos系統(tǒng)版本
cat /etc/centos-release
#顯示結(jié)果
#CentOS Linux release 7.5.1804 (Core)
一、安裝python3
1、安裝依賴包
yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
2、下載所需版本的Python3
(所有版本的python都可以在https://www.python.org/ftp/python/上找到)
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
3、創(chuàng)建存放目錄
mkdir /usr/local/python3
4、解壓壓縮包,進(jìn)入該目錄,安裝Python3
tar -xvf Python-3.6.6.tar.xz
cd Python-3.6.6
./configure --prefix=/usr/local/python3
make && make install #清除之前編譯的可執(zhí)行文件及配置文件
5、建軟鏈接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
這兩句輸進(jìn)去是不會跳出來什么提示的
6、驗(yàn)證
python3 -V
pip3 -V

7、制作成一鍵安裝包pythoninstall.sh
#!/bin/bash
#一鍵安裝python3.6.6腳本
echo '安裝python3.6.6并設(shè)置python3'
echo '安裝依賴庫'
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
echo '下載python3.6.6'
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
#創(chuàng)建安裝目錄
mkdir /usr/local/python3
#解壓并安裝
tar -xvf Python-3.6.6.tar.xz
cd Python-3.6.6
./configure --prefix=/usr/local/python3
make && make install
#創(chuàng)建軟鏈接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
echo '安裝完畢!'
終端輸入:bash pythoninstall.sh
一鍵安裝python3搞定!
二、安裝mysql5.1.73
1、查看有無安裝過mysql
rpm -qa|grep mysql
或者
yum list installed mysql
2、查看有無安裝包
yum list mysql*
3、安裝mysql服務(wù)端
yum install mysql mysql-server yum install mysql-devel
4、啟動&&停止
(1)設(shè)置數(shù)據(jù)庫默認(rèn)字符
在mysql配置文件/etc/my.cnf中加入default-character-set=utf8
nano /etc/my.cnf
(2)設(shè)置開機(jī)啟動
chkconfig mysqld on chkconfig --list mysqld
查看mysql開機(jī)啟動狀態(tài)
chkconfig --list |grep mysqld
(3)啟動mysql
service mysqld start
5、登錄
(1)創(chuàng)建root管理員
mysqladmin -u root password 123456
(2)忘記密碼(沒實(shí)踐過)
service mysqld stop mysqld_safe --user=root --skip-grant-tables mysql -u root use mysql update user set password=password("new_pass") where user="root"; flush privileges;
(3)查看mysql狀態(tài)
service mysqld status
顯示mysqld is running
6、遠(yuǎn)程訪問
(1)修改localhost
更改 "mysql" 數(shù)據(jù)庫里的 "user" 表里的 "host" 項,從"localhost"改成"%"
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
mysql>FLUSH PRIVILEGES;
(2)指定授權(quán)(成功實(shí)踐)
1)使用myuser/mypassword從任何主機(jī)連接到mysql服務(wù)器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
可以從別的機(jī)器上用mysql -umyuser -pmypassword -h192.168.1.XXX登錄
2)使用myuser/mypassword從ip為192.168.225.166的主機(jī)連接到mysql服務(wù)器:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.166' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
3)泛授權(quán)(未實(shí)踐)
mysql -h localhost -u root
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; //賦予任何主機(jī)上以root身份訪問數(shù)據(jù)的權(quán)限
mysql>FLUSH PRIVILEGES;
7、MySQL的幾個重要目錄
a、數(shù)據(jù)庫目錄
/var/lib/mysql/
b、配置文件
/usr/share /mysql(mysql.server命令及配置文件)
c、相關(guān)命令
/usr/bin(mysqladmin mysqldump等命令)
d、啟動腳本
/etc/rc.d/init.d/(啟動腳本文件mysql的目錄)
8、卸載mysql
a、查找以前是否裝有mysql
rpm -qa|grep -i mysql
b、刪除mysql
yum remove mysql mysql-server mysql-libs compat-mysql51
rm -rf /var/lib/mysql
rm /etc/my.cnf
9、bug處理
[ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)]
解決方法:
(1)停止mysql服務(wù)器
service mysqld stop
(2)使用mysqld_safe命令在啟動mysql,更新root賬號的密碼
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &:
注:--skip-grant-tables:不啟動grant-tables(授權(quán)表),跳過權(quán)限控制。
--skip-networking :跳過TCP/IP協(xié)議,只在本機(jī)訪問(從網(wǎng)上有些資料看,這個選項不是必須的??梢圆挥?
執(zhí)行上面命令后,此會話窗口會出現(xiàn)無反應(yīng)的狀態(tài),需要使用CTRL+C中斷會話
(3)設(shè)置密碼
mysql -u root mysql
mysql> update user set password=PASSWORD('12345')
-> where user='root' and host='root' or host='localhost';
flush privileges
(4)啟動mysql服務(wù)
service mysqld start
三、實(shí)現(xiàn)遠(yuǎn)程登錄mysql
要使得能從本地訪問遠(yuǎn)程服務(wù)器mysql數(shù)據(jù)庫,還需要對其授權(quán)。在服務(wù)器上我們需要做一些配置工作。
mysql -h localhost -u root -p
mysql>grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
mysql>flush privileges;
這句話的意思是將對所有的database(.)的所有的權(quán)限(如增刪改查等)授予所有的主機(jī)(%)的root用戶,這些用戶的登陸密碼為123456(可以和mysql的密碼不一樣)。
另外我們還需要關(guān)閉服務(wù)端的iptables:service iptables stop,然后就可以從本地機(jī)器上試著連接服務(wù)器的mysql了。
mysql -h 192.168.1.xx -u root -p123456
注意這里的-p后面的密碼緊跟其后,不要有空格,否則123456會被當(dāng)成數(shù)據(jù)庫名稱
如果你不想完全關(guān)閉iptables,我們還有另一個方法:為iptables增加一條接受遠(yuǎn)程訪問該mysql的規(guī)則,開放端口權(quán)限(mysql使用端口3306)。
注意一定要將規(guī)則加在reject規(guī)則的前面,否則不會起到作用,連接就會照樣報錯。
看到信息 firewall rules 防火墻的規(guī)則 其實(shí)就是保存在 /etc/sysconfig/iptables
nano /etc/sysconfig/iptables
在REJECT前面加上
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
保存

linux下iptables 禁止端口和開放端口
啟動指令:service iptables start
重啟指令:service iptables restart
關(guān)閉指令:service iptables stop
然后是相關(guān)配置:/etc/sysconfig/iptables
如何操作該配置呢?
vim /etc/sysconfig/iptables
然后進(jìn)去修改即可,修改完了怎么辦?這里很多人會想到/etc/rc.d/init.d/iptables save指令,但是一旦你這么干了你剛才的修改內(nèi)容就白做了。。。
具體方法是:
只修改/etc/sysconfig/iptables 使其生效的辦法是修改好后先service iptables restart,然后才調(diào)用/etc/rc.d/init.d/iptables save,
因?yàn)?etc/rc.d/init.d/iptables save會在iptables服務(wù)啟動時重新加載,要是在重啟之前直接先調(diào)用了/etc/rc.d/init.d/iptables save那么你的/etc/sysconfig/iptables 配置就回滾到上次啟動服務(wù)的配置了,這點(diǎn)必須注意?。?!
四、mysql基本操作
root用戶使用密碼登錄數(shù)據(jù)庫
mysql -u root -p
修改用戶密碼
mysqladmin -u 用戶 -p password 密碼
退出數(shù)據(jù)庫
exit
顯示所有數(shù)據(jù)庫
show databases;
創(chuàng)建數(shù)據(jù)庫
create database 數(shù)據(jù)庫名;
刪除數(shù)據(jù)庫
drop database 數(shù)據(jù)庫名;
單表查詢查詢所有字段
SELECT id, bookname, author, price, booktypeid FROM t_book;
SELECT * FROM t_book;
單表查詢查詢指定字段
SELECT bookname, author, price FROM t_book;
where條件查詢
SELECT * FROM t_book t WHERE t.bookTypeId = 1;
SELECT * FROM t_book t WHERE t.price > 100;
帶in關(guān)鍵字查詢
SELECT * FROM t_book t WHERE t.bookTypeId IN (1, 3);
SELECT * FROM t_book t WHERE t.bookTypeId NOT IN (1, 3);
帶between and的范圍查詢
SELECT * FROM t_book t WHERE t.price BETWEEN 50 AND 100;
SELECT * FROM t_book t WHERE t.price NOT BETWEEN 50 AND 100;
帶like的模糊查詢
/全字匹配,較少用/
SELECT * FROM t_book t WHERE t.bookName LIKE '物理學(xué)';
/單個字模糊匹配/
SELECT * FROM t_book t WHERE t.bookName LIKE '物理_';
/多個字模糊匹配/
SELECT * FROM t_book t WHERE t.bookName LIKE '物理學(xué)%';
SELECT * FROM t_book t WHERE t.bookName LIKE '%物理學(xué)%';
空值查詢
SELECT * FROM t_book t WHERE t.author IS NULL;
SELECT * FROM t_book t WHERE t.author IS NOT NULL;
帶and的多條件查詢
SELECT * FROM t_book t WHERE (t.price NOT BETWEEN 50 AND 100) AND t.bookTypeId = 1;
帶or的多條件查詢
SELECT * FROM t_book t WHERE t.bookTypeId = 1 OR t.bookTypeId = 7;
distinct支重復(fù)查詢
SELECT DISTINCT t.booktypeid FROM t_book t;
對查詢結(jié)果排序
SELECT * FROM t_book t ORDER BY t.price;
group by分組查詢
/與GROUP_CONCAT一起使用,會把結(jié)果拼接在一起/
SELECT GROUP_CONCAT(t.bookname), t.booktypeid FROM t_book t GROUP BY t.booktypeid;
/與COUNT一起使用,統(tǒng)計分組后每組成員的個數(shù)/
SELECT COUNT(t.bookname), t.booktypeid FROM t_book t GROUP BY t.booktypeid;
/與having一起使用,限制輸出結(jié)果/
SELECT COUNT(t.bookname), t.booktypeid FROM t_book t GROUP BY t.booktypeid HAVING COUNT(t.bookname) > 3;
/WITH ROLLUP,在最后加入一個匯總行/
SELECT COUNT(t.bookname), t.booktypeid FROM t_book t GROUP BY t.booktypeid WITH ROLLUP;
limit分頁查詢
/查詢1-5條記錄/
SELECT * FROM t_book t LIMIT 0,5;
/查詢6-10條記錄/
SELECT * FROM t_book t LIMIT 5,5;
/查詢11-15條記錄/
SELECT * FROM t_book t LIMIT 10,5;
連接查詢
連接查詢是將兩個或兩個以上的表按照某個條件連接起來,從中選取需要的數(shù)據(jù)。
1、內(nèi)連接查詢
內(nèi)連接查詢是一種最常用的連接查詢。內(nèi)連接查詢可以查詢兩個或者兩個以上的表。
SELECT * FROM t_book, t_booktype;
SELECT * FROM t_book b, t_booktype bt WHERE b.bookTypeId = bt.id;
SELECT b.bookName, b.price, bt.bookTypeName FROM t_book b, t_booktype bt WHERE b.bookTypeId = bt.id;
2、外連接查詢
外連接可以查出某一張的所有信息
a) 左連接查詢
可以查詢出“表1”的所有記錄,而“表2”中只能查詢出匹配的記錄
/以左表作為全量表進(jìn)行關(guān)聯(lián)查詢/
SELECT b.bookName, b.author, bt.bookTypeName FROM t_book b LEFT JOIN t_booktype bt ON b.bookTypeId = bt.id;
b) 右連接查詢
可以查詢出“表2”的所有記錄,而“表1”中只能查詢出匹配的記錄
/以右表作為全量表進(jìn)行關(guān)聯(lián)查詢/
SELECT b.bookName, b.author, bt.bookTypeName FROM t_book b RIGHT JOIN t_booktype bt ON b.bookTypeId = bt.id;
3、多條件連接查詢
SELECT b.bookName, b.price, bt.bookTypeName FROM t_book b, t_booktype bt WHERE b.bookTypeId = bt.id AND b.price > 50;
喜歡這篇文章,就請點(diǎn)贊支持。喜歡我就關(guān)注我。