1、安裝
1、官網下載安裝
2、解壓 修改安裝包為 mysql
將mysql放到/usr/local下
這么做的目的是mysql的啟動腳本以及配置文件的好多配置都是這個路徑下,省的改動
3、添加mysql用戶和用戶組
groupadd mysql
useradd -r -g mysql mysql
4、修改/etc/my.cnf文件
my.cnf文件有mysql的配置 ,啟動mysql的時候默認回去加載此文件
由于有多個my.cnf文件,所以有個優先級的概念
/bin/mysqld --verbose --help |grep -A 1 'Default options' 這個命令來查看優先級
datadir是mysql的數據保存路徑
socket是負責socket通信用的
5、初始化數據庫
此步的操作是用來加載mysql系統的表等信息 (mysql根目錄下執行)
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/
6、給mysql添加權限
chown -R root:root .
chown -R mysql:mysql data
7、啟動
cp support-files/mysql.server /etc/init.d/mysql
service mysql start
8、修改密碼
./bin/mysqladmin -u root password '密碼自己設定'
可能遇到的問題:
1、service mysql start
Starting MySQL.181108 04:58:50 mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
解決辦法
創建 mkdir /var/lib/mysql
2、[ERROR] Can't start server : Bind on unix socket: Permission denied
[ERROR] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
原因: Mysql客戶端和服務器端是通過初始化mysql.sock 文件來進行通信,所以服務器在啟動時需要寫入該文件,因此該文件所存放的目錄必須雙方都具有訪問權限。
所以,MySQL服務不具備目錄 /var/lib/mysql 的寫入權限,無法生成mysql.sock文件,自然服務啟動時無法找到該文件。
給目錄 /var/lib/mysql 付予寫入權限或者最大權限—chmod 777 /var/lib/mysql
解決辦法 chmod 777 /var/lib/mysql/
3、./mysqladmin -u root password 'root'
./mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!
解決:
建立軟連接
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
最后注意看錯誤日志
mysql的錯誤日志的位置在/etc/my.cnf中標記
log-error
[mysqld_safe]
log-error=/var/log/mysqlerr.log
參考文件:https://blog.csdn.net/smile___you/article/details/54409073
https://www.cnblogs.com/xinjing-jingxin/p/8025805.html
https://blog.csdn.net/qq_32331073/article/details/76229420
https://blog.csdn.net/hjf161105/article/details/78850658
https://www.cnblogs.com/wajika/p/6323026.html
2、設置遠程訪問
在服務器上安裝了mysql之后,默認的話只能夠服務器本機進行訪問,如果你想用自己電腦的客戶端或者跑代碼訪問數據庫,會報錯,沒有權限
解決
1、檢查防火墻沒有擋住3306端口
2、將mysql的權限設置為全局
將mysql權限設置成為全局的方法
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
上述是將數據庫root用戶下密碼123456的所有數據庫放開訪問權限
參考資料:https://www.cnblogs.com/cnblogsfans/archive/2009/09/21/1570942.html
3、linux下的亂碼問題
進入mysql,發現有中文亂碼的問題
解決思路
1、 查看數據庫編碼
通過這條命令展示其編碼
SHOW VARIABLES LIKE 'character%';
2、修改/etc/my.cnf文件
[mysqld]
character_set_server=utf8
[client]
default-character-set=utf8