MySQL免安装版配置与安装
step1:解压mysql包,我的路径是E:\mysql-5.5.19,就用%MySQL_HOME%表示。
step2:写my.ini文件,这个是mysql启动时的配置文件,压缩包里默认提供了几个配置模版,my-small.ini,?my-medium.ini,?my-large.ini,?my-huge.ini, my-innodb-heavy-4G.ini。这几个模版的主要区别是和内存有关的。
如small模版就说:如果系统内存小于64M,并且mysql不常用使用,那就用这个模版,并且使用这个模版mysqld??daemon守护精灵占用的资源最少。这个基本上就是做嵌入式数据库啦。
如果数据库在你的开发中应用中扮演一个比较重要的角色,那就用medium模版。medium模版即适合32M-64M内存的系统使用,又可以满足web开发使用。(是它自己说的,看来这个是全能型选手)
large模版,如果你的系统内存有512M,并且主要运行mysql,那就用这个。(512M现在大家都能轻松达到吧~~)
huge模版,就是系统内存在1G-2G之间用的。
my-innodb-heavy-4G这个模版就厉害,系统4G内存,并且只使用innodb表。这个基本上就是单做数据库服务器才用的。
以下贴上我的my.ini配置:
?
# The following options will be passed to all MySQL clients[client]# set default character for clientdefault-character-set=utf8#password= your_passwordport= 3306socket= /tmp/mysql.sock# Here follows entries for some specific programs# The MySQL server[mysqld]# The default character set that will be used when a new schema or table is# created and no character set is definedcharacter-set-server=utf8#Path to installation directory. All paths are usually resolved relative to this.basedir="E:/mysql-5.5.19/"#Path to the database rootdatadir="E:/mysql-5.5.19/data/"# The default storage engine that will be used when create new tables whendefault-storage-engine=INNODB# Set the SQL mode to strictsql-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=50# 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=67108864# 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=9M# 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=16port= 3306socket= /tmp/mysql.sockskip-external-lockingkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8M# Replication Master Server (default)# binary logging is required for replicationlog-bin=mysql-bin# binary logging format - mixed recommendedbinlog_format=mixed# required unique id between 1 and 2^32 - 1# defaults to 1 if master-host is not set# but will not function as a master if omittedserver-id= 1# Uncomment the following if you are using InnoDB tablesinnodb_data_home_dir ="E:/mysql-5.5.19/data/"innodb_data_file_path = ibdata1:10M:autoextendinnodb_log_group_home_dir ="E:/mysql-5.5.19/data/"# You can set .._buffer_pool_size up to 50 - 80 %# of RAM but beware of setting memory usage too highinnodb_buffer_pool_size = 64M# 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 = 2M# Set .._log_file_size to 25 % of buffer pool size# 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 = 5M# 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 = 1M# 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 = 0innodb_lock_wait_timeout = 50# 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[mysqldump]quickmax_allowed_packet = 16M[mysql]default-character-set=utf8no-auto-rehash# Remove the next comment character if you are not familiar with SQL#safe-updates[myisamchk]key_buffer_size = 20Msort_buffer_size = 20Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout
?
?注意上边mysqld的字符集设置,以前版本的mysqld可以使用default-character-set=utf8,但是新版本那个参数已经删除了,必须使用character-set-server=utf8,否则日志中会记录错误:[ERROR] mysqld: unknown variable 'default-character-set=utf8'。
step3:配置文件写好之后,可以使用mysqld --defaults-file="E:\mysql-5.5.19\my.ini"命令来启动mysql。这时root账户不需要密码。基于最普通的安全考虑,你也应该给root账户设置一个密码。使用如下步骤:
?
use mysql;update user set password = password('root');?
?在这里最好使用password()函数,这样有两方面好处,一,设置的密码root是加密存储的。select * from user;时,你会看到密码是一串字符。二,这样做不用更改user表的authentication_string字段的设置。
注意这时有默认的匿名用户,如果不需要应该删掉,在user表中可以看到。
step4:设置完成密码之后,只有重启mysqld服务,更改才能生效。如果只是关闭cmd窗口显然是不起作用的,你在进程管理器中应该还能看到mysqld并没有关掉。必须另开一个cmd,使用如下语句:
?
mysqladmin shutdown -uroot -p
?然后再次启动mysqld就ok了,再次启动的时候,并不需要加上--defaults-file这个参数,如果你没有对它做修改的话。
?
如有错误敬请指正,渴望真像的脚步从未停歇。