Articles of mysql

如何从命令行使用MySQL密码不安全?

我有几个使用mysql -e "{command}"函数的BASH工具。 每次使用这些工具时input密码都是一件痛苦的事情,所以为了避免用代码将密码写在纯文本文件中,我将它存储在内存中(使用read -s ),并且每当运行命令。 Mysql仍然认为密码是通过命令行提交的(因为在某种意义上说是这样),并且仍然给我提示错误“在命令行界面上使用密码可能是不安全的”。 为了我的目的,我不需要压制这个信息。 我需要知道的是,这是什么使它不安全? 密码永远不可见,所以肩上冲浪是不可能的,甚至有人猜测我的SSH密码将无法做到这一点,因为它存储在内存中,而不是脚本本身。 是中间人攻击还是类似的东西?

MySQL的奴隶可以同时成为主人吗?

我正在将2个DB服务器(Master&Slave)迁移到两个新的DB Server(Master和Slave) DB1 – 主(生产) DB2 – 从站(生产) DB3 – 新主人 DB4 – 新的奴隶 目前我有复制设置为: DB1 -> DB2 DB3 -> DB4 为了将生产数据复制到新的服务器上,我想把它“菊花链”,看起来像这样: DB1 -> DB2 -> DB3 -> DB4 这可能吗? 当我运行show master status; 在DB2(生产奴隶)上binlog possition永远不会改变: + —————— + ———- + ————– + —- ————– + | 文件| 位置| Binlog_Do_DB | Binlog_Ignore_DB | + —————— + […]

在高stream量的数据库服务器上安装一个非常完整的硬盘是不好的?

运行带有MySQL的Ubuntu服务器,用于高stream量生产数据库服务器。 除了MySQL实例外,没有别的机器正在运行。 我们将日常数据库备份存储在数据库服务器上,是否有任何性能问题或者我们应该保持硬盘相对空的原因? 如果数据库和所有备份的磁盘空间达到86%,是否会影响性能? 那么,运行86-90%+满容量的数据库服务器在运行时只能使用10%的完整磁盘,那么运行的方式会不会很好? 服务器上的总磁盘大小超过1TB,所以即使是10%的磁盘也足够用于基本的操作系统交换等等。

我如何备份一个表结构,而不是MySQL中的数据

我正在使用MySQLpipe理员进行数据库备份。 我可以完全备份整个数据库的所有表。 有一些表的大小非常大,所以我不知道我是否只能备份表的结构(只有它们的元素),而不是他们的数据。

如何使用mysqldump创build一个只读MySQL用户进行备份?

我正在使用automysqlbackup脚本来转储我的MySQL数据库,但我想有一个只读的用户做到这一点,以便我不存储我的根数据库密码在纯文本文件。 我创build了一个这样的用户: grant select, lock tables on *.* to 'username'@'localhost' identified by 'password'; 当我运行mysqldump (通过automysqlbackup或直接)我得到以下警告: mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES 我做错了吗? 我的只读用户需要额外的补助吗? 或者只能lockinginformation_schema表? 这是怎么回事? 编辑: GAH,现在它工作。 我以前可能没有运行FLUSH PRIVILEGES。 另外,这种情况多久会自动发生? 编辑: 不,它不工作。 手动运行mysqldump -u username -p –all-databases > dump.sql不会生成错误,但不会转储information_schema。 automysqlbackup确实会引发错误。

build立一个安全的本地托pipe的Linux机箱的A到Z.

我正在重新安装操作系统在一台机器上,将被用来为我们的业务主持几个应用程序。 申请将只在本地; 来自外部客户端的访问将仅通过VPN。 之前的设置对于大部分pipe理员都使用了托pipe控制面板(Plesk),而我正在考虑使用另一个类似的软件来重新安装 – 但我想我应该终于学习如何工作。 我可以做的大部分软件会为我做的事情,但我不清楚这一切的共生。 如果可能的话,这些都是为了进一步将自己从configuration程序员/程序员的土地上解放出来。 我找不到任何地方的完整演练,所以我想我会提出这个问题,如果人们可以帮助我的方式,我将编辑这个答案,并logging我的进展/陷阱。 希望有一天这会帮助某个人。 细节: CentOS 5.5 x86_64 httpd:Apache / 2.2.3 MySQL:5.0.77(待升级) PHP:5.1(待升级) 要求: 安全!! 安全的文件传输 安全的客户端访问(SSL证书和CA) 安全的数据存储 安全连接到另一台本地机器(MySQL) 虚拟主机/多个子域名 本地电子邮件会很好,但不是关键 步骤: 下载最新的CentOS DVD-iso (torrent对我很好)。 安装CentOS: 在进行安装时,我检查了服务器组件选项,认为我将使用另一个Plesk-likepipe理员。 事后看来,考虑到我决定尝试走自己的路,这可能不是最好的主意。 基本configuration: 设置用户,networking/ IP地址等百胜升级/升级。 升级PHP / MySQL: 为了将PHP和MySQL升级到最新版本,我必须在CentOS之外寻找另一个回购。 IUS看起来不错,我很高兴我find了! 将IUS存储库添加到我们的包pipe理器 cd /tmp wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm […]

是否有一个MySQL性能基准来衡量utf8_unicode_ci与utf8_general_ci的影响?

我在这里和那里读到,使用utf8_unicode_cisorting规则可以更好地处理unicode文本(例如,它知道如何将字符扩展为“oe”以进行search和sorting),与默认的utf8_general_ci相比,变音符号。 不幸的是,这两个来源都表明utf8_unicode_ci比utf8_general_ci稍慢。 所以我的问题是:“略慢”是什么意思? 有没有人运行基准? 我们是在谈论一个-0.01%的performance影响,或者更像是-25%? 谢谢你的帮助。

MySQL不会在旋转后将错误logging到新文件中?

问题解决了,但我正在写下未来的参考。 /root/.my.cnf [mysqladmin] user = root password = pa$$w0rd /etc/logrotate.d/mysql /var/log/mysql-slow.log /var/log/mysqld.log { daily rotate 7 dateext compress missingok #notifempty sharedscripts create 644 mysql mysql postrotate /usr/bin/mysqladmin flush-logs endscript } 从命令行运行时, logrotate工作正常: # logrotate -v -f /etc/logrotate.d/mysql 但从凌晨4点从cron运行时,它不起作用日志文件已被轮换,但MySQL不会将错误logging到新创build的文件: -rw-r–r– 1 mysql mysql 0 Aug 7 10:13 /var/log/mysqld.log -rw-r–r– 1 mysql mysql 20 Aug 4 04:04 […]

无法使用自签名SSL证书连接到MySQL

创build一个自签名的SSL证书后,我configuration了我的远程mysqld来使用它们(并且启用了ssl) 我SSH到我的远程服务器,并尝试连接到自己的mysqld使用SSL(MySQL服务器是5.5.25).. ~> mysql -u <user> -p –ssl=1 –ssl-cert=client.cert –ssl-key=client.key –ssl-ca=ca.cert Enter password: ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1) 好吧,我记得读过这个连接到同一台服务器通过SSL的一些问题。 所以我下载客户端键到我的本地盒,并从那里testing… ~> mysql -h <server> -u <user> -p –ssl=1 –ssl-cert=client.cert –ssl-key=client.key –ssl-ca=ca.cert Enter password: ERROR 2026 (HY000): SSL connection error 它不清楚这个“SSL连接错误”错误是指,但如果我省略-ssl-ca,那么我可以使用SSL连接.. ~> mysql -h <server> -u <user> -p –ssl=1 –ssl-cert=client.cert –ssl-key=client.key Enter password: Welcome […]

很less或没有停机时间修改非常大的MySQL表的列

我需要定期更改mysql 5.1中的表,主要是添加列。 用alter table命令很简单。 但是我的表格现在有多达4000万行,而且它们的增长速度很快…所以这些alter table命令需要几个小时。 在几个月内,他们会花上几天我猜测。 由于我使用亚马逊RDS,我不能有奴隶服务器玩,然后促进主。 所以我的问题是,如果有一种方法可以在最短的停机时间内完成这个任务? 我不介意操作需要几个小时甚至几天,如果用户仍然可以使用数据库当然…他们至less可以阅读而列正在添加? 如果我的应用程序尝试写入会发生什么? 插入或更新? 如果它立即失败,实际上不是那么糟糕,如果它挂起,并导致数据库服务器的问题,这是一个大问题.. 这必须是一个相当常见的扩展问题,每个人都需要添加列..什么是通常做生产数据库? 奴隶 – >主迁移? 更新 – 我忘了提及我正在使用innodb存储引擎