在Ubuntu/Linux环境下使用MySQL:开放/修改3306端口、开放访问权限
一、查看3306端口是否开放netstat-an|grep3306 这样代表端口未打开 >>>netstat-an|grep3306 tcp000.0.0.0:33060.0.0.0:*LISTEN 二、修改访问权限进入目录/etc/mysql,或者是(/etc/mysql/mysql.conf.d)如下所示 $cd/etc/mysql/ 在该目录下,有一个配置文件my.cnf(mysqld.cnf),如下所示 >>>ls conf.ddebian.cnfdebian-startmy1.cnfmy.cnf 找到my.cnf文件,并打开配置文件 $sudovimmy.cnf 文件打开后有一大段注释说明,不用去管它,直接看到下中的部分: [mysqld] # #*BasicSettings # user=mysql pid-file=/var/run/mysqld/mysqld.pid socket=/var/run/mysqld/mysqld.sock port=3306 basedir=/usr datadir=/var/lib/mysql tmpdir=/tmp lc-messages-dir=/usr/share/mysql skip-external-locking # #Insteadofskip-networkingthedefaultisnowtolistenonlyon #localhostwhichismorecompatibleandisnotlesssecure. bind-address=127.0.0.1 # #*FineTuning # key_buffer=2048M max_allowed_packet=500M 找到bind-addresss上一行,注释意思是在默认情况下只允许本地服务访问mysql,所以我们需要注释掉bind-address这条配置信息。注释方法,如下图所示: #bind-address=127.0.0.1 三、 修改端口号: 在当前这个配置文件,找到 [mysqld] # #*BasicSettings # user=mysql pid-file=/var/run/mysqld/mysqld.pid socket=/var/run/mysqld/mysqld.sock port=3306 basedir=/usr datadir=/var/lib/mysql tmpdir=/tmp lc-messages-dir=/usr/share/mysql skip-external-locking 如果这里没有prot =3306这条配置,那么需要在其中增加一条端口配置,如下所示: port=3306 修改文件后保存。 四、开放root账户访问权限 在第三步中,我们仅仅只是取消了本地访问限制,但是我们还是没有对账户权限进行设置。 重启MySQL服务,并进入MySQL控制台: #重启mysql servicemysqlstop servicemysqlstart #登陆 mysql-h127.0.0.1-uroot-p 登陆成功界面 YourMySQLconnectionidis2441 Serverversion:5.5.58-0ubuntu0.14.04.1(Ubuntu) Copyright(c)2000,2017,Oracleand/oritsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand/orits affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type'help;'or'h'forhelp.Type'c'toclearthecurrentinputstatement. mysql> 切换到系统数据库“mysql”中: $usemysql; 查看一下该数据库中的所有的表 $showtables; 界面如下: mysql>showtables; +---------------------------+ |Tables_in_mysql| +---------------------------+ |columns_priv| |db| |event| |func| |general_log| |help_category| |help_keyword| |help_relation| |help_topic| |host| |ndb_binlog_index| |plugin| |proc| |procs_priv| |proxies_priv| |servers| |slow_log| |tables_priv| |time_zone| |time_zone_leap_second| |time_zone_name| |time_zone_transition| |time_zone_transition_type| |user| +---------------------------+ 24rowsinset(0.00sec) 我们要修改上图中的最后一张表“user”,看一下这张表有哪些字段: $descuser; 界面如下: mysql>descuser;
+------------------------+-----------------------------------+------+-----+---------+-------+
|Field|Type|Null|Key|Default|Extra|
+------------------------+-----------------------------------+------+-----+---------+-------+
|Host|char(60)|NO|PRI|||
|User|char(16)|NO|PRI|||
|Password|char(41)|NO||||
|Select_priv|enum('N','Y')|NO||N||
|Insert_priv|enum('N','Y')|NO||N||
|Update_priv|enum('N','Y')|NO||N||
|Delete_priv|enum('N','Y')|NO||N||
|Create_priv|enum('N','Y')|NO||N||
|Drop_priv|enum('N','Y')|NO||N||
|Reload_priv|enum('N','Y')|NO||N||
|Shutdown_priv|enum('N','Y')|NO||N||
|Process_priv|enum('N','Y')|NO||N||
|File_priv|enum('N','Y')|NO||N||
|Grant_priv|enum('N','Y')|NO||N||
|References_priv|enum('N','Y')|NO||N||
|Index_priv|enum('N','Y')|NO||N||
|Alter_priv|enum('N','Y')|NO||N||
|Show_db_priv|enum('N','Y')|NO||N||
|Super_priv|enum('N','Y')|NO||N||
|Create_tmp_table_priv|enum('N','Y')|NO||N||
|Lock_tables_priv|enum('N','Y')|NO||N||
|Execute_priv|enum('N','Y')|NO||N||
|Repl_slave_priv|enum('N','Y')|NO||N||
|Repl_client_priv|enum('N','Y')|NO||N||
|Create_view_priv|enum('N','Y')|NO||N||
|Show_view_priv|enum('N','Y')|NO||N||
|Create_routine_priv|enum('N','Y')|NO||N||
|Alter_routine_priv|enum('N','Y')|NO||N||
|Create_user_priv|enum('N','Y')|NO||N||
|Event_priv|enum('N','Y')|NO||N||
|Trigger_priv|enum('N','Y')|NO||N||
|Create_tablespace_priv|enum('N','Y')|NO||N||
|ssl_type|enum('','ANY','X509','SPECIFIED')|NO||||
|ssl_cipher|blob|NO||NULL||
|x509_issuer|blob|NO||NULL||
|x509_subject|blob|NO||NULL||
|max_questions|int(11)unsigned|NO||0||
|max_updates|int(11)unsigned|NO||0||
|max_connections|int(11)unsigned|NO||0||
|max_user_connections|int(11)unsigned|NO||0||
|plugin|char(64)|YES||||
|authentication_string|text|YES||NULL||
+------------------------+-----------------------------------+------+-----+---------+-------+
42rowsinset(0.00sec)
字段非常多,就不一一罗列了。我们要用到的只是“Host”和“User”两个字段而已: $selecthost,userfromuser; 在这张表里,我们看到root用户仅仅只能在本地访问MySQL服务,所以我们要把它修改为“%”,意思是无论在哪里root账户都能够访问数据库服务: $updateusersethost='%'whereuser='root'; 注意,在真实的生产环境中,并不建议这么修改,因为安全风险太大。我建议根据实际情况将root用户的host项修改为某个指定的ip地址,或仍然保持localhost 最后一项设置,开放root账户所有权限: $grantallprivilegeson*.*to'root'@'%'identifiedby'你的root账户密码'; 使各种权限设置立即生效: $flushprivileges; 选择出host列和user列的数据: $selecthost,userfromuser; 五、再次确认3306端口状态 先退出mysql,查看3306端口状态 $quit $netstat-an|grep3306 如果看到下图这样,就可以了: netstat-an|grep3306 tcp000.0.0.0:33060.0.0.0:*LISTEN (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
