1. 程式人生 > >mysql---騰訊雲安裝mysql並遠端訪問

mysql---騰訊雲安裝mysql並遠端訪問

之前安裝mysql的時候遠端訪問時報1043和1045的錯誤,在網上找到了解決方案

1.使用yum命令安裝mysql

[[email protected] ~]#  yum -y install mysql-server  

2.設定開機啟動

[[email protected] ~]#  chkconfig mysqld on 

3.啟動MySQL服務

[[email protected] ~]#  service mysqld start  

4.設定MySQL的root使用者設定密碼

複製程式碼
[[email protected] ~]#  mysql -u root  
mysql> select user,host,password from mysql.user;  
+------+-----------+----------+  
| user | host | password | +------+-----------+----------+ | root | localhost | | | root | bogon | | | root | 127.0.0.1 | | | | localhost | | | | bogon | | +------+-----------+----------+ 5 rows in set (0.01 sec)
複製程式碼

查詢使用者的密碼,都為空,用下面的命令設定root的密碼為root

mysql> set password for [email protected]=password('root');  
mysql> exit  

6.建立mysql新使用者test_user

mysql> create user 'test_user'@'%' identified by 'test_user';  
Query OK, 0 rows affected (0.00 sec) 

7.給新使用者test_user授權,讓他可以從外部登陸和本地登陸
注意:@左邊是使用者名稱,右邊是域名、IP和%,表示可以訪問mysql的域名和IP,%表示外部任何地址都能訪問。

複製程式碼
mysql> grant all privileges on *.* to
'test_user'@'localhost' identified by 'test_user'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on *.* to 'test_user'@'%' identified by 'test_user'; Query OK, 0 rows affected (0.00 sec) mysql> select user,host,password from mysql.user; +----------+-----------+-------------------------------------------+ | user | host | password | +----------+-----------+-------------------------------------------+ | root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | root | bogon | | | root | 127.0.0.1 | | | | localhost | | | | bogon | | | test_user | % | *3046CF87132BBD4FDDF06F321C6859074843B7D3 | | test_user | localhost | *3046CF87132BBD4FDDF06F321C6859074843B7D3 | +----------+-----------+-------------------------------------------+ 7 rows in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
複製程式碼

8.檢視mysql5.1的預設儲存引擎
從下面的執行結果可以看出,mysql的預設引擎是MyISAM,這個引擎是不支援事務的。

複製程式碼
mysql> show engines;  
+------------+---------+------------------------------------------------------------+--------------+------+------------+  
| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |  
+------------+---------+------------------------------------------------------------+--------------+------+------------+  
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                      | NO           | NO   | NO         |  
| CSV        | YES     | CSV storage engine                                         | NO           | NO   | NO         |  
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance     | NO           | NO   | NO         |  
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |  
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables  | NO           | NO   | NO         |  
+------------+---------+------------------------------------------------------------+--------------+------+------------+  
5 rows in set (0.00 sec)  
複製程式碼

也可以以下面的方式檢視

複製程式碼
mysql> show variables like 'storage_engine';  
+----------------+--------+  
| Variable_name  | Value  |  
+----------------+--------+  
| storage_engine | MyISAM |  
+----------------+--------+  
1 row in set (0.00 sec)  
複製程式碼

9.修改mysql的預設引擎為InnoDB
9.1 停止mysql

mysql> exit;  
[[email protected] ~]# service mysqld stop  

9.2 修改/etc/my.cnf
[mysqld] 後加入

default-storage-engine=InnoDB  

加入後my.cnf的內容為:

複製程式碼
[[email protected] etc]# more my.cnf  
[mysqld]  
datadir=/var/lib/mysql  
socket=/var/lib/mysql/mysql.sock  
user=mysql  
# Disabling symbolic-links is recommended to prevent assorted security risks  
symbolic-links=0  
  
default-storage-engine=InnoDB  
  
[mysqld_safe]  
log-error=/var/log/mysqld.log  
pid-file=/var/run/mysqld/mysqld.pid  
複製程式碼

9.3 啟動mysql

[[email protected] etc]# service mysqld start  
Starting mysqld:  [  OK  ] 

9.4 檢視mysql預設儲存引擎

複製程式碼
[[email protected] etc]# mysql -u root -p  
Enter password:   
Welcome to the MySQL monitor.  Commands end with ; or \g.  
Your MySQL connection id is 2  
Server version: 5.1.73 Source distribution  
  
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.  
  
Oracle is a registered trademark of Oracle Corporation and/or its  
affiliates. Other names may be trademarks of their respective  
owners.  
  
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  
  
mysql> show variables like 'storage_engine';  
+----------------+--------+  
| Variable_name  | Value  |  
+----------------+--------+  
| storage_engine | InnoDB |  
+----------------+--------+  
1 row in set (0.00 sec)  
複製程式碼

10.CentOS6.5開放mysql埠3306
CentOS6.5預設是不開放埠的,如果要讓外部的系統訪問CentOS6.5上的mysql,必須開放mysql的埠3306
10.1 修改/etc/sysconfig/iptables
新增下面一行

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 

修改後iptables中的內容是

複製程式碼
[[email protected] etc]# more /etc/sysconfig/iptables  
# Firewall configuration written by system-config-firewall  
# Manual customization of this file is not recommended.  
*filter  
:INPUT ACCEPT [0:0]  
:FORWARD ACCEPT [0:0]  
:OUTPUT ACCEPT [0:0]  
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  
-A INPUT -p icmp -j ACCEPT  
-A INPUT -i lo -j ACCEPT  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT  
#新增配置項  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT  
-A INPUT -j REJECT --reject-with icmp-host-prohibited  
-A FORWARD -j REJECT --reject-with icmp-host-prohibited  
  
COMMIT  
複製程式碼

11.重啟防火牆

[[email protected] etc]# service iptables restart 

這樣就可以從外部訪問mysql了。

至此,mysql在CentOS6.5上的安裝過程、使用者建立、外部訪問的步驟全部完成。

—————————分割線—————————————

上面都是從別人發表的文章中擷取的~~~作者要是看到了莫怪,我只是想收藏,怕源文被刪就看不到了,謝謝你們這些摘樹的前人。

其實這樣在雲主機上設定mysql並訪問是OK的。適用於一切的centos6.5,亦或者其他linux系統。萬變不離其宗,系統的改變,無非是命令列語言的改變,其宗旨是不會變的。

LZ第一次用雲主機,想試試在本地遠端訪問一下,結果發現,咦,連接出錯了~~~,後來試了很多方法,還是沒有能成功。

剛開始,用Navicat連線遠端資料庫,出現如下錯誤:應該就是遠端不允許訪問了。

遠端拒絕訪問的情況可能有兩種:

一、mysql設定中,不允許遠端訪問.也即你使用的mysql登陸賬號沒有遠端訪問的許可權。比如root賬號,在我們之前看到的use許可權列表中,root就沒有遠端訪問的許可權。現在來設定root的遠端訪問許可權。

方法一:實現遠端連線(授權法)mysql> use mysql;Database changedmysql> grant all privileges  on *.* to [email protected]'%' identified by "root";mysql> select host,user,password from user;+--------------+------+-------------------------------------------+| host         | user | password                                  |+--------------+------+-------------------------------------------+| localhost    | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E || 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E || %            | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |+--------------+------+-------------------------------------------+3 rows in set (0.00 sec)這樣機器就可以以使用者名稱root密碼root遠端訪問該機器上的MySql.方法二:實現遠端連線(改表法)將host欄位的值改為%就表示在任何客戶端機器上能以root使用者登入到mysql伺服器,建議在開發時設為%。 mysql> use mysql;Database changedmysql> update user set host = '%' where user = 'root';這時,root將許可權改為ALL PRIVILEGES;這樣在遠端就可以通過root使用者訪問Mysql.二、確定伺服器上的防火牆沒有阻止 3306 埠。也即伺服器上面有沒有開放mysql的埠~(我的就是這個問題)  看到上面的第10條中,在埠管理iptables中新增3306埠的開放配置,這樣算是硬體的配置。然後看看你的雲主機設定裡面有沒有開放對應的埠,或者說是不是開放了所有埠~我的雲主機如下圖:騰訊雲主機中,貌似是沒有開放所有埠的,所以需要我們自己在這裡稍微設定一下,勾選“預設安全組放通全部埠”選項,“確定”。基本上,我們能做的都做了,要不然就是配置檔案出錯了,再返回去看看。設定好了以後,我去試了一下連線,結果成功了~哈哈,好高興~以後遇到這些問題就知道在哪些地方找問題了~~~