Linux環(huán)境編譯安裝Mysql以及PHP中文亂碼解決
mysql安裝? 5.6以后可能會(huì)收費(fèi),所以選擇5.1
以下從臺(tái)灣中山大學(xué)鏡像下載
1.首先要安裝C++編譯環(huán)境
# yum install gcc-c++
2.下載解壓
# wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.73.tar.gz
# tar zxvf mysql-5.1.73.tar.gz
# cd mysql-5.1.73
3.創(chuàng)建用戶
運(yùn)行MySQL數(shù)據(jù)庫(kù)的系統(tǒng)用戶、組
/sbin/nologin只是不允許系統(tǒng)login
# useradd mysql -M -s /sbin/nologin/mysql
4.預(yù)配置編譯
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=all
預(yù)編譯成功會(huì)出現(xiàn)下面的提示信息:
如果缺少ncurses安裝包會(huì)出現(xiàn)提示:
configure: error: No curses/termcap library found
解決辦法:
下載安裝相應(yīng)軟件包
一、如果你的系統(tǒng)是RedHat系列:
#yum list|grep ncurses
#yum -y install ncurses-devel
#yum install ncurses-devel
?
二、如果你的系統(tǒng)是Ubuntu或Debian:
#apt-cache search ncurses
#apt-get install libncurses5-dev
5.編譯安裝
# make && make install
------------------------------------------------------------------------------
如果報(bào)錯(cuò) mysql: Character set 'gbk' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index.xml' file
就是因?yàn)閏onfigure的時(shí)候沒有指定charset可以按如下這樣這樣
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-collation=gbk_chinese_ci
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=all
或者#make WITH_CHARSET=gbk BUILD_STATIC=yes install
或者#make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_COLLATION=gbk_chinese_ci BUILD_STATIC=yes install
------------------------------------------------------------------------------
6.建立配置文件
在源碼包目錄中的support-files文件夾下,提供了多個(gè)MySQL服務(wù)器的配置文件樣例文件,
分別適用于不同負(fù)載的數(shù)據(jù)庫(kù)服務(wù)器,一般選擇my-medium.cnf文件即可,適用于中等負(fù)載的數(shù)據(jù)庫(kù)。
# cp support-files/my-medium.cnf /etc/my.cnf
------------------------------------------------------------------------------
7.初始化數(shù)據(jù)庫(kù)
以mysql用戶的身份執(zhí)行mysql_install_db腳本,初始化數(shù)據(jù)庫(kù)。修改相關(guān)目錄所有權(quán),以便mysql用戶可以讀寫數(shù)據(jù)庫(kù)。
# /usr/local/mysql/bin/mysql_install_db --user=mysql
系統(tǒng)已經(jīng)提示你設(shè)置mysql賬號(hào)以及密碼的方式:
To do so, start the server, then issue the following commands:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
------------------------------------------------------------------------------
設(shè)置權(quán)限
# chown -R root:mysql /usr/local/mysql
# chown -R root:mysql /usr/local/mysql/var
/usr/local/mysql下
# chown -R mysql:mysql *
------------------------------------------------------------------------------
8.調(diào)整lib庫(kù)路徑
由于MySQL安裝到了非標(biāo)準(zhǔn)的路徑中,所以需要將MySQL的庫(kù)文件路徑加入到系統(tǒng)庫(kù)文件路徑中去。
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig
------------------------------------------------------------------------------
9.將mysqld添加為系統(tǒng)服務(wù)
在MySQL源碼包的suppory-files文件夾下,mysql.server文件可以用來(lái)作為mysqld服務(wù)的啟動(dòng)腳本。
# cp /usr/mysql-5.1.73/support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
------------------------------------------------------------------------------
10.啟動(dòng)MySQL
# /etc/init.d/mysqld start
或者如果已經(jīng)加入系統(tǒng)服務(wù)
# service mysqld start
或者
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
啟動(dòng)報(bào)錯(cuò):
啟動(dòng)mysql 報(bào)錯(cuò),,Starting MySQL.Manager of pid-file quit without updating fi[失敗]
出現(xiàn)這個(gè)問(wèn)題,主要是,因?yàn)楸痉?wù)器原來(lái)已經(jīng)安裝過(guò)mysql 應(yīng)該是沒有卸載干凈,所以會(huì)報(bào)錯(cuò).
第一,先刪除rm -rf /var/lib/mysql,然后重新初始化usr/local/mysql/bin/mysql_install_db --user=mysql
第二, 看是否已經(jīng)運(yùn)行數(shù)據(jù)庫(kù)進(jìn)程了,ps -a|grep mysql
# service mysqld start
Starting MySQL.Manager of pid-file quit without updating file. [失敗]
# ps -a|grep mysql
# kill -9 PID
#? ps -a|grep mysql
#? kill -9 PID
# service mysqld start
第三 權(quán)限問(wèn)題
/usr/local/mysql下
# chown -R mysql:mysql *
ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)其實(shí)網(wǎng)上大家問(wèn)的最多的都是整個(gè)問(wèn)題,說(shuō)什么鏈接不到mysqld.sock,其實(shí)大家不妨看看mysql的錯(cuò)誤日志就明白怎么回事,我這里的錯(cuò)誤日志是在/var/lib/mysql/*.err 你會(huì)發(fā)現(xiàn)mysql只所以不能啟動(dòng),是因?yàn)?var/lib/mysql的權(quán)限不允許mysql服務(wù)訪問(wèn),英文mysql默認(rèn)是調(diào)用mysql用戶來(lái)啟動(dòng)服務(wù)的,好了,既然知道是什么原因找到不能啟動(dòng),那就簡(jiǎn)單了。我們只要chown -R mysql:mysql /var/lib/mysql 就行,如果還是啟動(dòng)不了,再慢慢調(diào)試權(quán)限,反正一般啟動(dòng)不了都是權(quán)限的問(wèn)題。如果大家還是不能啟動(dòng)不了的話,那就用我的比較繁瑣的權(quán)限的設(shè)置,反正我每次都是這么做的,一般不會(huì)有問(wèn)題,見下:chown -R root /usr/local/mysql
chgrp -R mysql /usr/local/mysql
chown -R root /usr/local/mysql/bin
chgrp -R mysql /usr/local/mysql/bin
chgrp -R mysql /var/lib/mysql
chmod 777 /var/lib/mysql
chown -R root /var/lib/mysql/mysql
chgrp -R mysql /var/lib/mysql/mysql
chmod 777 /var/lib/mysql/mysql
chown -R root /var/lib/mysql/mysql/*
chgrp -R mysql /var/lib/mysql/mysql/*
chmod 777 /var/lib/mysql/mysql/*
chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a
------------------------------------------------------------------------------
11.查看狀態(tài)
# /etc/rc.d/init.d/mysqld status
12.停止
# /etc/rc.d/init.d/mysqld stop
或者
# /usr/bin/mysqladmin -u root -p shutdown
------------------------------------------------------------------------------
13.將mysql加入到系統(tǒng)變量path中
將/usr/local/mysql/bin 加入到path中,這樣在shell里就可以運(yùn)行mysql相關(guān)的命令。
# vi /etc/profile
加入
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
------------------------------------------------------------------------------
14.登陸mysql
如果之前增加過(guò)環(huán)境變量直接
# mysql -u root -p
否則全路徑
# /usr/local/mysql/bin/mysql -u root -p
Enter password: 密碼??? 默認(rèn)是空密碼
顯示所有的數(shù)據(jù)庫(kù)
mysql> show databases;
選擇你所創(chuàng)建的數(shù)據(jù)庫(kù)
mysql> USE 數(shù)據(jù)庫(kù)名
顯示所選數(shù)據(jù)庫(kù)的所有表
mysql> show tables;
退出
mysql> exit;或者mysql> quit;
------------------------------------------------------------------------------
15.修改root賬號(hào)為本機(jī)外都可以訪問(wèn)
mysql>use mysql;
添加用戶
mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
改密碼
mysql>update user set Password = password('123456') where User='root';
mysql>flush privileges;
mysql>exit;
------------------------------------------------------------------------------
16.Navicat連接mysql
Navicat Premium和NavicatMySQL都可以
Navicat 連接錯(cuò)誤:
Mysql:is not allowed to connect to this MySQL server
如果你想連接你的mysql的時(shí)候發(fā)生這個(gè)錯(cuò)誤:
ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server
解決方法:
1。 改表法。可能是你的帳號(hào)不允許從遠(yuǎn)程登陸,只能在localhost。這個(gè)時(shí)候只要在localhost的那臺(tái)電腦,登入mysql后,更改 "mysql" 數(shù)據(jù)庫(kù)里的 "user" 表里的 "host" 項(xiàng),從"localhost"改稱"%"
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
mysql>flush privileges;
如果前面沒有做修改root的密碼或者你自己設(shè)置為空,那么要用空密碼連接。切記,不能用之前設(shè)置的root12345那個(gè)用戶名密碼,那個(gè)默認(rèn)只能本機(jī)訪問(wèn)
mysql這個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)表user,可以看到有好幾個(gè)root賬號(hào),對(duì)應(yīng)本機(jī)local和外機(jī)%
mysql是系統(tǒng)庫(kù)不能刪
圖形化的界面還是比在命令行快多了。
Navicat for mysql中文保存出現(xiàn)亂碼的解決辦法
1.右鍵數(shù)據(jù)庫(kù)里鏈接,選擇“鏈接屬性”
2.切換到“高級(jí)”選項(xiàng)卡下 把“使用mysql字符集”前面的“勾選”去掉
如果不這樣設(shè)置就會(huì)出現(xiàn)輸入中文,保存就是“???”
17.Mysql補(bǔ)裝innodb引擎方法
先查看當(dāng)前引擎
mysql> show engines;
沒有innodb引擎。
然后需要確定,在mysql的'plugin_dir'下有ha_innodb_plugin.so和ha_innodb.so兩個(gè)文件
查詢'plugin_dir'的路徑可以用以下命令
mysql> show variables like 'plugin_dir';
接下來(lái)就是在mysql命令行安裝一下
mysql> INSTALL PLUGIN InnoDB SONAME 'ha_innodb.so';
再用show engines查一下就看到安裝好了innodb引擎
mysql> show engines;
如何整個(gè)數(shù)據(jù)庫(kù)使用innodb引擎呢?
修改/etc/my.cnf文件
# vim /etc/my.cnf
[mysqld] 后加入
default-storage-engine=InnoDB
同時(shí)注釋下面和inndb相關(guān)的#等
innodb_data_home_dir = /usr/local/mysql/var
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/var
重啟mysql
修改表引擎方法
alter table table_name engine=innodb;
默認(rèn)的隔離級(jí)別
select @@global.tx_isolation,@@tx_isolation;
更改會(huì)話級(jí)的隔離級(jí)別
set session tx_isolation='read-uncommitted';
更改系統(tǒng)級(jí)的隔離級(jí)別?
set global tx_isolation='read-uncommitted';?
=======================================================
18.PHP連接mysql
中文不亂碼
PHP輸出表格輸出:<?php? //header("Content-Type:?text/html;?charset=gbk"); $server_name="localhost:3306";?//數(shù)據(jù)庫(kù)服務(wù)器名稱? $username="root";?//?連接數(shù)據(jù)庫(kù)用戶名? $password="123456";?//?連接數(shù)據(jù)庫(kù)密碼? $mysql_database="test";?//?數(shù)據(jù)庫(kù)的名字? //?連接到數(shù)據(jù)庫(kù)? $conn=mysql_connect($server_name,?$username,?$password);? mysql_query("SET?NAMES?GBK"); //mysql_query("set?names?utf8"); //mysql_query("SET?NAMES?GB2312"); //?從表中提取信息的sql語(yǔ)句? $strsql="select?*?from?user_info";? //執(zhí)行sql查詢? //mysql_select_db($mysql_database,$conn); //$result=mysql_query($sql); $result=mysql_db_query($mysql_database,?$strsql,?$conn);? //?獲取查詢結(jié)果? //?定位到第一條記錄? mysql_data_seek($result,?0);? echo?""; //?循環(huán)取出記錄? while?($row=mysql_fetch_row($result))?{? echo?"";? for?($i=0;?$i
mysql示例employees數(shù)據(jù)庫(kù)
------------------------------------------------------------------------------
參考:
mysql問(wèn)題解決
在linux下安裝mysql
MySQL數(shù)據(jù)庫(kù)的安裝與啟動(dòng)
mysqldump: Character set 'gbk' is not a compiled character set
Mysql:is not allowed to connect to this MySQL server
源碼安裝Mysql,補(bǔ)裝innodb引擎方法