在Linux操作MySQL

一、使用ps -ef|grep mysql查看mysql是否啟動以及查看目錄結構

MySQL的目錄結構:

/var/lib/mysql?????? mysql數據庫文件的存放路徑

/usr/share/mysql??? 配置文件目錄? mysql.server命令及配置文件

/usr/bin?????? 相關命令目錄 mysqladmin? mysqldump等命令

/etc/init.d/mysql??? 起停相關腳本

二、mysql配置文件

用rpm包安裝的MySQL是不會安裝/etc/my.cnf文件的,有以下兩種可能

1. my.cnf只是MySQL啟動時的一個參數文件,可以沒有它,這時MySQL會用內置的默認參數啟動,

2. MySQL在啟動時自動使用/usr/share/mysql目錄下的my-medium.cnf文件,這種說法僅限于rpm包安裝的MySQL

我們只需要把my-medium.cnf復制到/etc/my.cnf目錄下即可。

`cp /usr/share/mysql/my-medium.cnf /etc/my.cnf`

三、MySQL遠程連接

1.先進入MySQL,然后查詢當前用戶詳情:如下

mysql> use mysql;

Database changed

mysql> select host,user,password from user;

+----------------------------+------+----------------------------------------------------------------------------+

| host? ? ? ? ? ? ? ? ? ? ? ? ? ?| user | password? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |

+----------------------------+------+----------------------------------------------------------------------------+

|?localhost? ? ? ? ? ? ? ? ? ? ?| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| localhost.localdomain | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| 127.0.0.1? ? ? ? ? ? ? ? ? ? | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

| ::1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

+-----------------------------+------+---------------------------------------------------------------------------+

4 rows in set (0.00 sec)

2.?添加或修改一行數據,使得host主機有 % ,%表示任何IP都可以連接

mysql> update user set password=password('123456') where user = 'root';

mysql> update user set host='%' where user='root' and host='localhost';

mysql> flush privileges;

注意:執行完畢以后,一定要執行flush privileges;

3.?接下來用使用root用戶登錄,然后use mysql;如果出現如下情況:

ERROR 1044 (42000): Access denied for user ''@'localhost' todatabase 'mysql'!即不能使用mysql,因為在mysql數據庫的user表里,存在用戶名為空的賬戶即匿名賬戶,導致登錄的時候是雖然用的是root,但實際是匿名登錄的,通過錯誤提示里的''@'localhost'可以看出來,處理方法:

(1).關閉mysql

?? # service mysqld stop

(2.)屏蔽權限

?? # mysqld_safe --skip-grant-table

?? 屏幕出現: Starting demo from .....

(3.)新開起一個終端輸入

?? # mysql -u root mysql

?? mysql> delete from user where?user='';

?? mysql> flush privileges;//記得要這句話,否則如果關閉先前的終端,又會出現原來的錯誤

注意:執行完畢以后,一定要執行flush privileges,不然仍然會出錯;

4.最后的結果如下,然后可以進行遠程連接,如果仍然無法連接,可以查看防火墻是否攔截

5.如果是阿里云ECS服務器,以上工作都做好了,仍然無法連接,則需要配置ecs安全組防火墻

(1.)在服務器控制臺找到? 更多->網絡和安全組->安全組配置



(2)到達安全組列表,點擊配置規則->添加安全組規則:



確定以后,即配置完畢

四、mysql中文亂碼問題

1.進入mysql中輸入show variables like '%char%';命令查看mysql的字符集,如下圖:

數據庫默認的字符編碼不是utf-8,所以導致亂碼,所以需要修改配置文件中的字符集編碼。

2.修改配置文件字符集編碼,vim my.cnf 進入修改mysql的配置文件

找到[client],在socket下一行加入default-character-set=utf8,如下圖:

找到[mysqld]加入如下設置

character_set_server=utf8

character_set_client=utf8

collation-server=utf8_general_ci

如下圖

找到[mysql]加入default-character-set=utf8設置:如下圖

3.重新開啟mysql服務

執行① service mysql stopservice mysql start或者命令service mysql restart

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容