Windows下MySQL的绿化与精简
MySQL本身就支持安装使用,本文只是对自己使用免安装版MySQL的经历记录下来,以便以后查看。
首先是获取Windows下的MySQL免安装版本,这个需要去到MySQL官网进行下载。我一般喜欢把首页页面拖动到最下方,点击MySQL Server进入下载。
我下载了MySQL5.5.33版本(zip包)。
得到的文件就是mysql-5.5.33-win32.zip,解压出来后我把名字改成了mysql。
我们保留文件夹bin、data和share,其余的文件夹可以删除。
还需要一个my.ini作为配置文件,zip包中的几个ini是根据你物理机硬件水平进行选择的,从<=64M到4G的内存。
我一般都直接删除,然后沿用以前的ini文件,你也可以选择适合自己的my-*.ini进行配置然后改名为my.ini。我使用的旧配置文件:
- # MySQL Server Instance Configuration File
- # ----------------------------------------------------------------------
- # Generated by the MySQL Server Instance Configuration Wizard
- #
- #
- # Installation Instructions
- # ----------------------------------------------------------------------
- #
- # On Linux you can copy this file to /etc/my.cnf to set global options,
- # mysql-data-dir/my.cnf to set server-specific options
- # (@localstatedir@ for this installation) or to
- # ~/.my.cnf to set user-specific options.
- #
- # On Windows you should keep this file in the installation directory
- # of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To
- # make sure the server reads the config file use the startup option
- # "--defaults-file".
- #
- # To run run the server from the command line, execute this in a
- # command line shell, e.g.
- # mysqld --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"
- #
- # To install the server as a Windows service manually, execute this in a
- # command line shell, e.g.
- # mysqld --install MySQLXY --defaults-file="C:\Program Files\MySQL\MySQL Server X.Y\my.ini"
- #
- # And then execute this in a command line shell to start the server, e.g.
- # net start MySQLXY
- #
- #
- # Guildlines for editing this file
- # ----------------------------------------------------------------------
- #
- # In this file, you can use all long options that the program supports.
- # If you want to know the options a program supports, start the program
- # with the "--help" option.
- #
- # More detailed information about the individual options can also be
- # found in the manual.
- #
- #
- # CLIENT SECTION
- # ----------------------------------------------------------------------
- #
- # The following options will be read by MySQL client applications.
- # Note that only client applications shipped by MySQL are guaranteed
- # to read this section. If you want your own MySQL client program to
- # honor these values, you need to specify it as an option during the
- # MySQL client library initialization.
- #
- [client]
- port=3306
- [mysql]
- default-character-set=utf8
- # SERVER SECTION
- # ----------------------------------------------------------------------
- #
- # The following options will be read by the MySQL Server. Make sure that
- # you have installed the server correctly (see above) so it reads this
- # file.
- #
- [mysqld]
- # The TCP/IP Port the MySQL Server will listen on
- port=3306
- #Path to installation directory. All paths are usually resolved relative to this.
- basedir="./mysql"
- #Path to the database root
- datadir="./mysql/data/"
- # The default character set that will be used when a new schema or table is
- # created and no character set is defined
- character-set-server=utf8
- # The default storage engine that will be used when create new tables when
- default-storage-engine=INNODB
- # Set the SQL mode to strict
- sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
- # The maximum amount of concurrent sessions the MySQL server will
- # allow. One of these connections will be reserved for a user with
- # SUPER privileges to allow the administrator to login even if the
- # connection limit has been reached.
- max_connections=100
- # Query cache is used to cache SELECT results and later return them
- # without actual executing the same query once again. Having the query
- # cache enabled may result in significant speed improvements, if your
- # have a lot of identical queries and rarely changing tables. See the
- # "Qcache_lowmem_prunes" status variable to check if the current value
- # is high enough for your load.
- # Note: In case your tables change very often or if your queries are
- # textually different every time, the query cache may result in a
- # slowdown instead of a performance improvement.
- query_cache_size=0
- # The number of open tables for all threads. Increasing this value
- # increases the number of file descriptors that mysqld requires.
- # Therefore you have to make sure to set the amount of open files
- # allowed to at least 4096 in the variable "open-files-limit" in
- # section [mysqld_safe]
- table_cache=256
- # Maximum size for internal (in-memory) temporary tables. If a table
- # grows larger than this value, it is automatically converted to disk
- # based table This limitation is for a single table. There can be many
- # of them.
- tmp_table_size=35M
- # How many threads we should keep in a cache for reuse. When a client
- # disconnects, the client's threads are put in the cache if there aren't
- # more than thread_cache_size threads from before. This greatly reduces
- # the amount of thread creations needed if you have a lot of new
- # connections. (Normally this doesn't give a notable performance
- # improvement if you have a good thread implementation.)
- thread_cache_size=8
- #*** MyISAM Specific options
- # The maximum size of the temporary file MySQL is allowed to use while
- # recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE.
- # If the file-size would be bigger than this, the index will be created
- # through the key cache (which is slower).
- myisam_max_sort_file_size=100G
- # If the temporary file used for fast index creation would be bigger
- # than using the key cache by the amount specified here, then prefer the
- # key cache method. This is mainly used to force long character keys in
- # large tables to use the slower key cache method to create the index.
- myisam_sort_buffer_size=69M
- # Size of the Key Buffer, used to cache index blocks for MyISAM tables.
- # Do not set it larger than 30% of your available memory, as some memory
- # is also required by the OS to cache rows. Even if you're not using
- # MyISAM tables, you should still set it to 8-64M as it will also be
- # used for internal temporary disk tables.
- key_buffer_size=55M
- # Size of the buffer used for doing full table scans of MyISAM tables.
- # Allocated per thread, if a full scan is needed.
- read_buffer_size=64K
- read_rnd_buffer_size=256K
- # This buffer is allocated when MySQL needs to rebuild the index in
- # REPAIR, OPTIMZE, ALTER table statements as well as in LOAD DATA INFILE
- # into an empty table. It is allocated per thread so be careful with
- # large settings.
- sort_buffer_size=256K
- #*** INNODB Specific options ***
- # Use this option if you have a MySQL server with InnoDB support enabled
- # but you do not plan to use it. This will save memory and disk space
- # and speed up some things.
- #skip-innodb
- # Additional memory pool that is used by InnoDB to store metadata
- # information. If InnoDB requires more memory for this purpose it will
- # start to allocate it from the OS. As this is fast enough on most
- # recent operating systems, you normally do not need to change this
- # value. SHOW INNODB STATUS will display the current amount used.
- innodb_additional_mem_pool_size=3M
- # If set to 1, InnoDB will flush (fsync) the transaction logs to the
- # disk at each commit, which offers full ACID behavior. If you are
- # willing to compromise this safety, and you are running small
- # transactions, you may set this to 0 or 2 to reduce disk I/O to the
- # logs. Value 0 means that the log is only written to the log file and
- # the log file flushed to disk approximately once per second. Value 2
- # means the log is written to the log file at each commit, but the log
- # file is only flushed to disk approximately once per second.
- innodb_flush_log_at_trx_commit=1
- # The size of the buffer InnoDB uses for buffering log data. As soon as
- # it is full, InnoDB will have to flush it to disk. As it is flushed
- # once per second anyway, it does not make sense to have it very large
- # (even with long transactions).
- innodb_log_buffer_size=2M
- # InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and
- # row data. The bigger you set this the less disk I/O is needed to
- # access data in tables. On a dedicated database server you may set this
- # parameter up to 80% of the machine physical memory size. Do not set it
- # too large, though, because competition of the physical memory may
- # cause paging in the operating system. Note that on 32bit systems you
- # might be limited to 2-3.5G of user level memory per process, so do not
- # set it too high.
- innodb_buffer_pool_size=107M
- # Size of each log file in a log group. You should set the combined size
- # of log files to about 25%-100% of your buffer pool size to avoid
- # unneeded buffer pool flush activity on log file overwrite. However,
- # note that a larger logfile size will increase the time needed for the
- # recovery process.
- innodb_log_file_size=54M
- # Number of threads allowed inside the InnoDB kernel. The optimal value
- # depends highly on the application, hardware as well as the OS
- # scheduler properties. A too high value may lead to thread thrashing.
- innodb_thread_concurrency=10
my.ini
上文中basedir和datadir比较重要,从名称来看是指mysql的安装路径和数据文件存放路径,我已经修改了。
bin文件夹中的.pdb文件是没有存在感的,*test*.exe和*debug*.exe我也删除了。
最后的文件结构大概是这个样子:
COPYING是我特意留下的,你可以去除。
这个样子就算OK了,我们可以使用批处理指令启动MySQL了:
- "./mysql/bin/mysqld.exe" --defaults-file=./mysql/my.ini
不过这个命令必须cd到mysql文件夹所在目录进行,或者是将上面的语句保存为*.bat(也要放到mysql同级目录下):
启动mysql.bat,mysql数据库就开始工作了。
这个窗口会卡住,但其实它是可以关闭的,关闭后mysql没有被结束:
我们登录进mysql:
mysql的初始密码是空,所以我们只需要在Enter password:后面敲击回车(不要做任何输入)即可进入系统。
我们先对root的密码进行设置:
然后删除匿名用户(匿名用户就是登录名为空的用户,它不需要密码即可登录,对安全性有影响)。当然,先删除匿名用户再改root密码也可以:
现在,mysql数据库就配置好了。
通过一个批处理命令和windows shell的结合,我们可以实现mysql只启动一次且不卡住窗口:
- tasklist | find /i "mysqld.exe"
- if %errorlevel%==0 (exit) else goto stm
- :stm
- start /min "" "./mysql/bin/mysqld.exe" --defaults-file=./mysql/my.ini
(值得一提的是我们并没有考虑将mysql作为系统服务,因为上文的路径是相对路径,理论上我们可以随意移动。而服务要求路径明确,不过服务的优势在于比较方便地跟随系统启动和关闭,容易挂起等)
最后介绍一个我的思路,我通常会为一个项目维护一个数据库,而且使用一个专门的用户来进行管理。
比如我会使用如下语句来创建用户:
- grant all privileges on testdb.* to testuser identified by 'testuser';
上述语句可以在testdb还未创建时执行,而且testdb被删除重建后testeuser仍然具有权限。
不过上述语句没有赋予testuser创建视图的权利,所以我建议大家使用root完成视图的创建。
欢迎您移步我们的交流群,无聊的时候大家一起打发时间:
或者通过QQ与我联系:
(最后编辑时间2013-09-17 21:57:02)
Windows下MySQL的绿化与精简的更多相关文章
- MySQL 5.7 Command Line Client输入密码后闪退和windows下mysql忘记root密码的解决办法
MySQL 5.7 Command Line Client输入密码后闪退的问题: 问题分析: 1.查看mysql command line client默认执行的一些参数.方法:开始->所有程序 ...
- coreseek实战(二):windows下mysql数据源部分配置说明
coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...
- Windows下mysql自动备份的最佳方案
网上有很多关于window下Mysql自动备份的方法,其实不乏一些不好的地方和问题,现总结出一个最好的方法供大家参考: 新建一个记事本,然后重命名为: mysql_backup.bat 然后单击右键选 ...
- Windows下mysql忘记密码的解决方法
Windows下mysql忘记密码的解决方法 mysql5.0 http://www.jb51.net/article/21984.htm方法一: 1.在DOS窗口下输入 net stop mysql ...
- Windows下MYSQL自动备份批处理
windows下MYSQL自动备份批处理 2011-05-04 09:16:45| 分类: mysql|举报|字号 订阅 按系统时间进行备份 注意mysql安装路径中如果有空格.就要把,.b ...
- 【已解决】Windows下 MySQL大小写敏感 解决方案及分析
Windows下 MySQL大小写敏感配置 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window ...
- windows下mysql和linux下mysql主从配置
1. linux下mysql安装版本5.6 windows下mysql版本5.7 不要问我为什么版本不一致 就是想这么搞 2. linux为主服务器 windows为从服务器 3.找到li ...
- Windows 下 MySql 5.7.20安装及data和my.ini文件的配置(转)
Windows 下 MySql 5.7.20安装及data和my.ini文件的配置 本文通过图文并茂的形式给大家介绍了MySql 5.7.20安装及data和my.ini文件的配置方法. my ...
- windows下mysql配置
windows下mysql配置 忙活了大半天,总算配置好了,本文献给windows下没试用过Mysql的小白,勿喷 http://blog.csdn.net/z1074907546/article ...
随机推荐
- Go语言之高级篇beego框架之模型(Models)
一.模型(Models) 1.beego-orm的相关特性 支持 Go 的所有类型存储 -轻松上手,采用简单的 CRUD 风格 -自动 Join 关联表 跨数据库兼容查询 允许直接使用 SQL 查询/ ...
- C#SpinWait和volatile一点温习
今天看ConcurrentQueue<T> 源码发现里面居然没有用到lock,我记得ConcurrentDictionary里面是有lock的,lock的是字典里面每一个key,但是Con ...
- nssm和AlwaysUp来包装exe文件为windows服务
最近遇到要把windows exe文件部署为service,因为原先开发为exe程序,现在有不想修改code改为service,但是部署必须是service服务, 所以我们需要一个包装器来包装exe为 ...
- .NET 并行编程——数据并行
本文内容 并行编程 数据并行 环境 计算 PI 矩阵相乘 把目录中的全部图片复制到另一个目录 列出指定目录中的所有文件,包括其子目录 最近,对多线程编程,并行编程,异步编程,这三个概念有点晕了,之前我 ...
- PL/SQL学习笔记之基本块格式与语法
一:PL/SQL程序块 PL/SQL是一种块结构的语言,一个PL/SQL程序就是一个 代码逻辑块. PL/SQL程序由三部分构成: 1 声明 部分 使用关键字DECLARE开头,它是一个可选的部分,用 ...
- [转]Java NIO 系列教程
Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(B ...
- 译:4.RabbitMQ Java Client 之 Routing(路由)
在上篇博文 译:3.RabbitMQ 之Publish/Subscribe(发布和订阅) 我们构建了一个简单的日志系统 我们能够向许多接收者广播日志消息. 在本篇博文中,我们将为其添加一个功能 - ...
- 物联网架构成长之路(7)-EMQ权限验证小结
1. 前言 经过前面几小节,讲了一下插件开发,这一小节主要对一些代码和目录结构进行讲解,这些都是测试过程中一些个人经验,不一定是官方做法.而且也有可能会因为版本不一致导致差异. 2. 目录结构 这个目 ...
- Java 汇编代码
https://shipilev.net/blog/2015/black-magic-method-dispatch/ https://github.com/shipilev/article-meth ...
- openfire群消息投递