Mysql设置优化及内网访问

Mysql安装完成后,想要提高其查询速度以及被其他电脑访问,需要进行一定的设置。

设置优化:

在优化前,先要知道自己的数据库的应用场景,然后才能进行相应的优化。我这边的数据库特点为:

读取为主,千万至亿的量级,不需要外键等限制,不是所有表都有唯一的key当主键。

所以在建表时,为提高读取的效率,我选择MyISAM作为数据库引擎,并在建表时指定某个常用的查询字段建立索引:

CREATE TABLE test (
    a VARCHAR(50),
    b DOUBLE,
    c DATE,
    INDEX test_a (a)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM
;

test表中有a、b、c三个字段,a可能是以后常用来where的字段。目前mysql默认的数据库引擎为InnoDB,如需要更换则需要在代码中明确ENGINE=MyISAM 语句。
在创建好表、导入好数据后,由于数据量较大查询时可能较慢,则进一步对mysql的默认设置进行调整。需要注意的是,Windows下mysql的配置文件仍在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini中,而在ubuntu16.04下,其配置文件分布在:

/etc/mysql/conf.d/mysql.cnf
/etc/mysql/mysql.conf.d/mysql.cnf

/etc/mysql/my.cnf文件内就是讲配置文档指向以上两个文档的。以下贴出目前我的设置:

/etc/mysql/conf.d/mysql.cnf:
[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8

以上就是我之前文章中设置其编码的为utf-8的方法。

/etc/mysql/mysql.conf.d/mysql.cnf:

[mysqld]
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql
log-error   = /var/log/mysql/error.log
# By default we only accept connections from localhost
# bind-address  = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

max_connections=3000
query_cache_size=0
query_cache_type=0
tmp_table_size=256M
thread_cache_size=128
myisam_sort_buffer_size=2048M
key_buffer_size=2048M
read_buffer_size=8M
read_rnd_buffer_size=128M
innodb_buffer_pool_size=3096M
innodb_log_file_size=512M
innodb_thread_concurrency=8
join_buffer_size=8M
max_allowed_packet=64M
sort_buffer_size=8M
max_connect_errors=6000

以上是我根据http://www.jb51.net/article/83569.htmhttp://blog.imdst.com/mysql-5-6-pei-zhi-you-hua/ 的设置,修改了其默认的一些缓存值,提高查询速度。(参考内存为16G,大家要看着自己的内存来设置啊。)

内网访问:

参考:http://www.cnblogs.com/tovep/archive/2012/10/09/2716672.html
http://blog.csdn.net/duck_arrow/article/details/13621935
其实以上/etc/mysql/mysql.conf.d/mysql.cnf中我出了在下方加了一些设置语句,还做了一个修改,就是# bind-address = 127.0.0.1。这个语句的作用为绑定访问数据库地址为本机地址,如果要允许其他人访问,则需将这句注释掉。
将这句注释掉之后,想要允许内网访问,还需要进行别的操作:
以root用户登录mysql:
mysql -uroot -p
往保存用户信息的表中添加账户:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.0/255.255.0.0' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

这里我将允许访问的IP限定为192.168.*.*如果只想某个IP(假定为192.168.1.3)访问,则可将'192.168.0.0/255.255.0.0'改为'192.168.1.3'。如果想数据库被任何人访问,则可将其设置为'%',当然这很不安全。此外,新版本的mysql中,对'yourpassword'有一定要求,即你设置的密码不能太简单了,我懒得去解读密码的要求,直接设置了一个比较复杂的密码……(就怕记不住)。
好了,搞定好之后,重启mysql服务:

 sudo /etc/init.d/mysql restart
 或
 sudo service mysql restart
 或
 sudo service mysql stop
 sudo service mysql start

嗯,我是挺无聊的。。。
BTW,Windows下win+R,输入services.msc,找到mysql服务,重启。

好了,可以愉快地用别的机子访问内网的数据库了。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页