mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql>quit;
#mysql -uroot -p
root
mysql> SET PASSWORD = PASSWORD('123456');
1、删除系统自带的mysql
rpm -qa|grep mysql
yum remove mysql-libs
2、安装mysql YUM源
wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
rpm -ivh mysql-community-release-el6-5.noarch.rpm
3、安装mysql
yum install mysql-server mysql-devel
4、root密码设置
service mysqld stop
mysqld_safe --skip-grant-tables &
mysql -u root -p
回车直接进去,或者随便输入一个密码
use mysql;
update user set password=PASSWORD("root")where user="root"; 更改密码为 root
flush privileges; // 更新权限
quit
yum -y install mysql-server
目录:
1 配置说明
2 my.cnf修改
3 命令说明
---------------------------------------------------------------------1 配置
my.cnf #find 查找my.cnf /etc/my.cnf
data目录 1 查看my.cnf搜索datadir
2 phpinfo搜索MYSQL_SOCKET /var/lib/mysql/
------------------mysql 日志 通常, MySQL 的日志是放在它的数据库目录下。
mysql有以下几种日志:
错误日志: log-err
查询日志: log
慢查询日志: log-slow-queries
更新日志: log-update
二进制日志: log-bin
要 把日志生成在 /var/log 目录下(是系统日志存放的地方,只有 root 账号有写权限),需要 MySQL 进程对这个目录有读写权限,一般是不这么做的,也考虑到安全问题,包括 MySQL 本身的数据安全,因为对 MySQL 的所有操作,都会记录到常规查询日志。MySQL 的日志就不要用 /var/log/ 目录下。---------------------------------------------------------------------2 my.cnf
http://blog.sina.com.cn/s/blog_417b97470100mvnj.html Mysql性能调优
[client]
default-character-set = utf8
port = 3306
socket = /tmp/mysql.sock
[mysql]
no-auto-rehash
[mysqld]
#default-character-set = utf8
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
datadir = /data0/mysql/3306/data
open_files_limit = 10240
back_log = 600
max_connections = 3000 实际MySQL服务器允许的最大连接数16384;
max_connect_errors = 6000 可以允许多少个错误连接
table_cache = 1024 高速缓存的大小.table_cache的值在2G内存以下的机器中的值默认时256到 512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对 SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 2M 是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存.并不是越大越好,由于是 connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。
join_buffer_size = 2M
thread_cache_size = 64 重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果 缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能
根据物理内存设置规则如下:
1G ---> 8
2G ---> 16
3G ---> 32
>3G ---> 64
thread_concurrency = 16 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。
应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8.
query_cache_size = 32M 缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空
query_cache_limit = 2M 单个查询能够使用的缓冲区大小.缺省为1M
query_cache_min_res_unit = 2k 它指定分配缓冲区空间的最小单位,缺省为4K。检查状态值Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多,这就表明查询 结果都比较小,此时需要减小query_cache_min_res_unit
default-storage-engine = MyISAM
default_table_type = MyISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED 设置所有连接的默认事务隔离级
tmp_table_size = 256M 临时HEAP数据表的最大长度
max_heap_table_size = 256M HEAP数据表(内存表)的最大长度(默认设置是16M);
long_query_time = 1
log_long_format
log-bin = /data0/mysql/3306/binlog
binlog_cache_size = 8M 为binary log指定在查询请求处理过程中SQL 查询语句使用的缓存大小
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 512M
expire_logs_days = 7
key_buffer_size = 256M 索引缓冲区的大小,严格说是它决定了数据库索引处理的速度,尤其 是索引读的速度
read_buffer_size = 1M 读查询操作所能使用的缓冲区大小,该参数对应的分配内存也是每连接独享.
read_rnd_buffer_size = 16M 针对按某种特定顺序(如ORDER BY子句)输出的查询结果(默认256K) 加速排序操作后的读数据,提高读分类行的速度。
bulk_insert_buffer_size = 64M 指定 MyISAM 类型数据表表使用特殊的树形结构的缓存
myisam_sort_buffer_size = 128M myisam引擎的sort_buffer_size
myisam_max_sort_file_size = 10G
#myisam_max_extra_sort_file_size = 10G 这个参数已经不在MySQL
myisam_repair_threads = 1
myisam_recover 自动检查和修复无法正确关闭MyISAM表
skip-name-resolve
master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
server-id = 1 设定为master
innodb_additional_mem_pool_size = 16M InnoDB用来存储数据字典和其他内部数据结构的内存池大小。
应用程序里的表越多就应该分配越多的内存,如果innodb用光了这个内存就会向系统内存要。
并且写入警告日志,根据MySQL手册,对于2G内存的机器,推荐值是20M。
缺省值是1M。通常不用太大,只要够用就行,与表结构的复杂度有关系。
innodb_status_file
InnoDB发送诊断输出到stderr或文件,而不是到stdout或者固定尺寸内存缓冲,以避免底层缓冲溢出。作为一个副效果,SHOW INNODB STATUS 的 输出每15秒钟写到一个状态文件。这个文件的名字是innodb_status.pid,其中pid是服务器进程ID。这个文件在MySQL数据目录里创 建。正常关机之时,InnoDB删除这个文件。如果发生不正常的关机,这些状态文件的实例可能被展示,而且必须被手动删除。在移除它们之前,你可能想要检 查它们来看它们是否包含有关不正常关机的原因的有用信息。仅在配置选项innodb_status_file=1被设置之 时,innodb_status.pid文件被创建。
innodb_buffer_pool_size = 2048M 指定大小的内存来缓冲数据和索引。
对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。
根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_file_io_threads = 4 IO操作(硬盘写操作)的最大线程个数(默认设置是4)。
innodb_thread_concurrency = 16 InnoDB驱动程序能够同时使用的最大线程个数(默认设置是8)。
innodb_flush_log_at_trx_commit = 2 InnoDB记录日志的方式
如果设置为1,则每个事务提交的时候,MySQL都会将事务日志写入磁盘。
如果设置为0或者2,则大概每秒中将日志写入磁盘一次。
实际测试发现,该值对插入数据的速度影响非常大
设置为2时插入10000条记录只需要2秒,设置为0时只需要1秒,而设置为1时则需要229秒。
建议尽量将插入操作合并成一个事务,这样可以大幅提高速度。
在存在丢失最近部分事务的危险的前提下,可以把该值设为0。
innodb_log_buffer_size = 16M 日志缓存的大小
默认的设置在中等强度写入负载以及较短事务的情况下,一般可以满足服务器的性能要求。
如果更新操作峰值或者负载较大就应该加大这个值。8-16M即可。
innodb_log_file_size = 128M 日志组中每个日志文件的大小在高写入负载尤其是大数据集的情况下很重要。
这个值越大性能就越高,但恢复时时间会加长。默认是5M。Javaeye推荐innodb_log_file_size = 64M
innodb_log_files_in_group = 3
日志组中的日志文件数目,推荐使用3
innodb_max_dirty_pages_pct = 90
最大脏页的百分数
innodb_lock_wait_timeout = 120
事务获得资源超时设置,默认50s
innodb_file_per_table = 0
为每一个新数据表创建一个表空间文件而不是把数据表都集中保存在中央表空间里
[mysqldump]
quick 不缓冲查询,直接导出至stdout
max_allowed_packet = 32M
停用mysql的严格验证STRICT_TRANS_TABLES
#把sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 中"STRICT_TRANS_TABLES,"去掉,重启MySQL服务,问题解决……汗颜~~~
#开启event
#event_scheduler = on
#myisam自动修复
myisam-recover=BACKUP,FORCE
# 在[mysqld] 中輸入
log-bin=/var/lib/mysql/mysql-bin
#expire_logs_days = 10
#max_binlog_size = 100M
log=/var/lib/mysql/mysql.log
log-error=/var/lib/mysql/error.log
#log-update=/var/lib/mysql/update.log 未能成功生成
long_query_time=1
log-slow-queries
log-queries-not-using-indexes
是否启用了日志
mysql>show variables like 'log_%';
怎样知道当前的日志
mysql> show master status;
顯示二進制日志數目
mysql> show master logs;
看二进制日志文件用mysqlbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail
#详细说明
log-bin=/var/lib/mysql/mysql-bin #二进制LOG,mysqlbinlog直接读取二进制日志文件。二进制日志包含所有更新数据的语句 , 其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外,如果做同步复制( Replication )的话,也需要使用二进制日志传送修改情况。log_bin指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。MySQL会在文件名后面 自动添加数字索引,每次启动服务时,都会重新生成一个新的二进制文件。
时间长了log bin也会占很大的硬盘空间,所以在my.ini中加上对其的限制。
#expire_logs_days = 10
#max_binlog_size = 100M
---------------------
# show master status;
#mysqlbinlog mysql-bin.000052
-------------格式如下:
flush privileges
/*!*/;
# at 173
#090814 10:09:22 server id 1 end_log_pos 448 Query thread_id=51 exec_tim e=0 error_code=0
use sq_gllutf8/*!*/;
SET TIMESTAMP=1250215762/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@sessio n.collation_server=8/*!*/;
update gll_products set sn_name='休闲裤' ,ch_name='H957-3' ,color='卡其' ,co mposition='60%马棉44' ,huoqi='' ,p_remarks='' ,utime='2009-08-14 10:09:22' , uip='192.168.200.96' WHERE id = '339'
/*!*/;
# at 448
#090814 10:11:14 server id 1 end_log_pos 556 Query thread_id=59 exec_tim e=0 error_code=0
SET TIMESTAMP=1250215874/*!*/;
delete from gll_member WHERE id = '26'
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
-----------------------------------
log=/var/lib/mysql/mysql.log #对所有执行语句进行记录
----------------------------格式如下:
090814 10:11:14 59 Connect sq_szczkj@localhost on
59 Init DB sq_gllutf8
59 Query SET NAMES 'UTF8'
59 Query delete from gll_member WHERE id = '26'
59 Quit
090814 10:11:15 60 Connect sq_szczkj@localhost on
60 Init DB sq_gllutf8
60 Query SET NAMES 'UTF8'
60 Query select * from gll_member ORDER BY id DESC
60 Query select * from gll_member ORDER BY id DESC limit 0,50
60 Quit
61 Connect sq_szczkj@localhost on
61 Init DB sq_gllutf8
61 Query SET NAMES 'UTF8'
61 Query select * from gll_zone ORDER BY id DESC
61 Query select * from gll_zone ORDER BY id DESC limit 0,99
61 Quit
---------------------------------
log-error=/var/lib/mysql/error.log
#log-update=/var/lib/mysql/update.log 未能成功生成
long_query_time=1
log-slow-queries
#--log-slow-queries[=
的file_name参数可选,缺省值是file_name
]
,如果指定了file_name参数的话,mysql就会把慢查询的日志记录到file_name所设定的文件中,如果file_name提供的是一个相对路径,mysql会把日志记录到mysql的data目录中。host_name
-slow.log
log-queries-not-using-indexes #在mysql的启动配置文件或命令行参数中增加--log-queries-not-using-indexes
参数就可以启用未使用索引查询语句了,日志记录的文件就是log-slow-queries对应的文件。
----------------Mysql的log_slow_queries日志文件设置不当错误
log_slow_queries = ON
log_slow_queries=/var/log/slow-queries.log
long_query_time=5
这种容易导致slow-queries.log无法读取的错误(权限问题)。
常见错误提示:
[ERROR] Could not use /var/log/slow-queries.log for
logging (error 13). Turning logging off for the whole duration of the
MySQL server process. To turn it on again: fix the cause, shutdown the
MySQL server and restart it.
2,比较妥当的配置:
log_slow_queries = ON
log_slow_queries=slow-log
long_query_time=5
直接在目录/var/lib/mysql/ 下生成 slow-log 文件
----------------------------测试慢日志
mysql>select sleep(1);
mysql>select sleep(3);
mysql>select * from gll_products;
打开mysql.log和慢日志文件可以看到
select sleep(3);
select * from gll_products;
---------------------------------------------------------------------3 命令说明
show variables like 'long%'; 查询 long_query_time 的值
mysql>show variables like 'log_%'; 是否启用了日志
mysql> show variables like 'log_%';
+---------------------------------+--------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------+
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| log_error | /var/lib/mysql/error.log |
| log_queries_not_using_indexes | ON |
| log_slave_updates | OFF |
| log_slow_queries | ON |
| log_warnings | 1 |
+---------------------------------+--------------------------+
mysql> show master logs; 顯示二進制日志數目
mysql>show variables like 'log_bin'; 确认你日志是否启用
mysql> show master status; 怎样知道当前的二进制日志
查看从某一段时间到某一段时间的二进制日志
mysqlbinlog --start-datetime='2008-01-19 00:00:00' --stop-datetime='2008-01-30 00:00:00' /var/lib/mysql/mysql-bin.000006 > mysqllog1.log
shell>mysqlbinlog mail-bin.000001 看二进制日志文件用mysqlbinlog
或者shell>mysqlbinlog mail-bin.000001 | tail
flush privileges; 刷新数据库
mysql> SHOW STATUS; 运行下列命令可以获取状态变量的值:
mysql> SHOW STATUS LIKE ‘[匹配模式]’; ( 可以使用%、?等 ) 如果只要检查某几个状态变量,可以使用下列命令:
select version(); 查看mysql版本
---------------------------------------------------------------------------------------------------------------------
环境:centos 6.5 x64
datadir=/software/mysql-5.6.21/data
vim /etc/profile
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT #开启3306端口
service iptables save #保存防火墙规则
service iptables restart #重置防火墙规则
相关推荐
4.12.1 在 Win32 上安装 MySQL 4.12.2 在 Win95 /Win98上启动 MySQL 4.12.3 在 NT 上启动 MySQL 4.12.4 在 Win32 上运行 MySQL 4.12.5 用 SSH 从 Win32 连接一个远程MySQL 4.12.6 MySQL-Win...
MySQL中文参考手册.chm 449kb <br/>0 译者序 1 MySQL的一般的信息 1.1 什么是MySQL? 1.2 关于本手册 1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5...
mysql5.5、mysql5.5、mysql5.7、mysql8 各种版本最新下载合集 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提 高了灵活性。 MySQL...
1.7.3. MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. ...
├─新版MySQL DBA 课件ppt │ 第一课数据库介绍篇.pdf │ 第七课MySQL数据库设计.pdf │ 第三十一课percona-toolkits 的实战及自动化.pdf │ 第三课MySQL授权认证.pdf │ 第九课MySQL字符集.pdf │ 第二十一课MySQL...
MySQL 8.0 升级版本 在本文中,我们将详细介绍 MySQL 8.0 升级版本的步骤和注意事项。MySQL 是一个流行的开源关系数据库管理系统,广泛应用于各种Web 应用程序中。升级 MySQL 版本可以提高数据库性能、修复 bugs 和...
在C#编程环境中,连接MySQL数据库通常依赖于特定的数据提供者,这就是MySql.Data.dll和MySql.Web.dll的角色。这两个动态链接库(DLL)文件是MySQL官方提供的.NET数据访问组件,使得C#开发者能够轻松地与MySQL服务器...
mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57驱动jar包mysql57...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,而JDBC(Java Database Connectivity)是Java语言与数据库交互的标准接口。本文将深入探讨Mysql5.6和Mysql5.7的JDBC驱动,以及如何使用`mysql-connector-java-...
在本教程中,我们将深入探讨如何在Windows操作系统上详细安装MySQL 8.0.36.0。MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),它在各种规模的企业和项目中扮演着核心角色。MySQL 8.0版本带来了许多性能...
MySQL ODBC 5.1 Driver 是一个用于连接MySQL数据库的开放数据库连接(ODBC)驱动程序,它允许用户通过标准的ODBC接口访问MySQL数据库,适用于Windows操作系统。这个版本是免安装的,意味着用户可以直接解压使用,...
MySQL驱动jar文件是Java应用程序与MySQL数据库之间通信的关键组件,主要功能是提供Java Database Connectivity (JDBC) API,使得Java开发者能够通过编写Java代码来执行SQL语句,从而操作MySQL数据库。标题提到的...
MySQL论坛上的MySQL社区支持 1.8. MySQL标准的兼容性 1.8.1. MySQL遵从的标准是什么 1.8.2. 选择SQL模式 1.8.3. 在ANSI模式下运行MySQL 1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的...
MySQL 5.7中文文档是针对这个特定数据库版本的详细技术参考,包含了丰富的信息,适合开发者、管理员和学习者使用。文档的翻译质量被描述为“还行”,尽管资源可能不易找到,但提供了全面的指南。 该文档涵盖了从...
mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql5.7镜像安装+mysql学习+mysql5.7镜像包 mysql5.7安装教程+mysql...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,其驱动程序是Java应用程序连接MySQL数据库的关键组件。本文将详细介绍MySQL 8和MySQL 5驱动的区别以及与JDK版本的兼容性问题。 首先,MySQL 8和5的主要区别在于...
《涂抹MySQL:跟着三思一步一步学MySQL》是一本旨在帮助初学者和中级用户深入理解MySQL数据库系统的教程。这本书通过清晰的解释和实例,逐步引导读者掌握MySQL的核心概念和技术。MySQL是一种广泛使用的开源关系型...
例如,`mysql_init()`用于初始化一个MySQL连接结构,`mysql_real_connect()`用于建立实际的数据库连接,`mysql_query()`用于执行SQL查询,而`mysql_store_result()`和`mysql_use_result()`则用于处理查询结果。...
MySQL驱动是Java应用程序连接到MySQL数据库的关键组件,它允许程序通过Java Database Connectivity (JDBC) API与MySQL服务器进行通信。本压缩包包含了两个适用于MySQL 5.7版本的驱动文件:`mysql-connector-java-...