錯誤緣由:/var/lib/mysql目錄中socket文件不存在。
鏈接mysql服務器有兩種方式:tcp鏈接,經過socket文件鏈接。經過socket文件,啓動mysql服務,mysql服務會自動生成一個sock文件,生成的sock文件默認放在 --datadir=/var/lib/mysql,mysql默認從/var/lib/mysql目錄讀取sock文件。
1.下載mysq的repo源
wget http://repo.mysql.com/mysql-community-release-e17-5.noarch.rpmhtml
2.安裝mysql-community-release-e17-5.noarch.rpm包
sudo rmp -ivh mysql-community-release-e17-5.noarch.rpmpython
安裝這兩個包後,會得到兩個MySQL的yum repo源:
/etc/yum.repos.d/mysql-community.repo
/etc/yum.repos.d/mysql-community-source.repomysql
3.安裝MySQLsql
sudo yum install mysql-server mysql-client libmysqlclient-dev mysql-devel shell
MySQL-python(與上面那一行連着寫)服務器
若是上面遇到問題:
看下服務開沒 systemctl status mysqld網絡
4.初始化:
mysql_install_dbsocket
5.設置密碼
方式一(SET PASSWORD 命令):
mysql -u root
SET PASSWORD FOR 'root'@'localhost'=PASSWORD('新密碼');tcp
方式二(使用mysqladmin):
mysqladmin -u root password '新密碼'
若是root已經設置過密碼,採用如下方法:
mysqladmin -u root password 舊密碼 '新密碼'
方式三(使用update直接編輯user表):
mysql -u root
use mysql
UPDATE user SET PASSWORD = PASSWORD('新密碼') WHERE user = 'root';post
忘記密碼:
mysql_safe --skip-grant-tables
mysql -u root myql
UPDATE user SET PASSWORD = PASSWORD('新密碼') WHERE user = 'root';
FLUSH PRIVILEGES;
設置utf-8編碼:
在 vi/etc/my.cnf:
# 在文件中[mysqld]下面增長一行:
character_set_server = utf8
# 重啓生效
systemctl restart mysqld
重啓命令:
server mysqld restart
MySQL服務:
1.啓動命令:
/bin/systemctl start mysqld.service
2.關閉命令
/bin/systemctl stop mysqld.service
3.重啓命令
/bin/systemctl restart mysqld.service
4.查看狀態
/bin/systemctl status mysqld.service
查看系統配置文件:
cat etc/my.cnf
報錯:
錯誤緣由:/var/lib/mysql目錄中socket文件不存在。
鏈接mysql服務器有兩種方式:tcp鏈接,經過socket文件鏈接。經過socket文件,啓動mysql服務,mysql服務會自動生成一個sock文件,生成的sock文件默認放在 --datadir=/var/lib/mysql,mysql默認從/var/lib/mysql目錄讀取sock文件。
解決辦法:
一、看看/var/lib/mysql/mysql 有沒有mysql.sock文件
二、沒有mysql.sock,重啓mysql服務,看看有沒有。
三、沒有的話,ps aux|grep mysql|grep -v 'grep' 查看mysql服務生成的sock在哪一個目錄,看看這個目錄有沒有。
四、若是mysql服務生成在其餘目錄,解決辦法有:
方法1、修改mysql服務生成的目錄,在my.cnf 中[mysqld] socket
方法2、mysql從/var/lib/mysql/讀取sock文件,創建一個軟鏈接,或者copy過來
方法3、修改mysql讀取的目錄,在my.cnf 中[mysql] socket
方法4、啓動指定socket,mysql -uroot -p123456 --socket='/var/lib/mysql/mysql.sock'
注意:
一、經過socket,只能在本地機器上鍊接。
二、使用-hlocalhost就是通過socket,不通過網絡,經過netstat 看不到tcp鏈接,能夠認爲mysql與mysql.sock文件交互,向裏面寫數據,從裏面讀取數據。
三、使用-h127.0.0.1就是通過tcp,經過netstat 能夠看到鏈接。
啓動mysql 報錯:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
一、先查看 /etc/rc.d/init.d/mysqld status 看看m y s q l 是否已經啓動.
另外看看是否是權限問題.
二、肯定你的mysql.sock是否是在那個位置,
mysql -u 你的mysql用戶名 -p -S /var/lib/mysql/mysql.sock
三、試試:service mysqld start
四、若是是權限問題,則先改變權限 #chown -R mysql:mysql /var/lib/mysql
[root@localhost ~]# /etc/init.d/mysqld start
啓動 MySQL: [ 肯定 ]
[root@localhost ~]# mysql -uroot -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
緣由是,/var/lib/mysql 的訪問權限問題。
shell> chown -R mysql:mysql /var/lib/mysql
接着啓動服務器
shell> /etc/init.d/mysql start
服務器正常啓動後察看 /var/lib/mysql 自動生成mysql.sock文件。
當咱們在不經過yum(CentOS<redhat>)、apt-get(Ubuntu<debian>)來安裝MySQL的時候,一般執行如下命令來改變目錄的擁有者:
[root@localhost ~]# chown -R mysql:mysql ./
那?這兩個mysql誰是用戶名誰是用戶組呢?見chown詳解
chown將指定文件的擁有者改成指定的用戶或組,用戶能夠是用戶名或者用戶ID;組能夠是組名或者組ID;文件是以空格分開的要改變權限的文件列表,支持通配符。系統管理員常用chown命令,在將文件拷貝到另外一個用戶的名錄下以後,讓用戶擁有使用該文件的權限。
1.命令格式:
chown [選項]... [全部者][:[組]] 文件...
2.命令功能:
經過chown改變文件的擁有者和羣組。在更改文件的全部者或所屬羣組時,可使用用戶名稱和用戶識別碼設置。普通用戶不能將本身的文件改變成其餘的擁有者。其操做權限通常爲管理員。
3.命令參數:
必要參數:
-c 顯示更改的部分的信息
-f 忽略錯誤信息
-h 修復符號連接
-R 處理指定目錄以及其子目錄下的全部文件
-v 顯示詳細的處理信息
-deference 做用於符號連接的指向,而不是連接文件自己
選擇參數:
--reference=<目錄或文件> 把指定的目錄/文件做爲參考,把操做的文件/目錄設置成參考文件/目錄相同擁有者和羣組
--from=<當前用戶:當前羣組> 只有當前用戶和羣組跟指定的用戶和羣組相同時才進行改變
--help 顯示幫助信息
--version 顯示版本信息