我正在设置一个新的 MySQL 服务器,我想为它提供与现有服务器(即将消失)相同的一组用户名、允许的主机和密码。
仅转储用户表然后将其加载到新服务器上是否可行?
还有比这更好的方法吗?
登录到我的 Webmin 控制面板,我注意到几乎所有的磁盘空间都已满。我在我的系统上搜索了十个最大的文件/目录,发现一个名为 ibdata1 的文件占用了大约 94GB 的空间。它驻留在我的 /var/lib/mysql 目录中。
ibdata1 有什么作用?我可以安全地删除它吗?我的假设是它是某种垃圾,但这只是一个疯狂的猜测。
这是问题...
考虑到 192 万亿条记录,我应该考虑什么?
我主要关心的是速度。
这是桌子...
CREATE TABLE `ref` (
`id` INTEGER(13) AUTO_INCREMENT DEFAULT NOT NULL,
`rel_id` INTEGER(13) NOT NULL,
`p1` INTEGER(13) NOT NULL,
`p2` INTEGER(13) DEFAULT NULL,
`p3` INTEGER(13) DEFAULT NULL,
`s` INTEGER(13) NOT NULL,
`p4` INTEGER(13) DEFAULT NULL,
`p5` INTEGER(13) DEFAULT NULL,
`p6` INTEGER(13) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY (`s`),
KEY (`rel_id`),
KEY (`p3`),
KEY (`p4`)
);
Run Code Online (Sandbox Code Playgroud)
这是查询...
SELECT id, s FROM ref WHERE red_id="$rel_id" AND p3="$p3" AND p4="$p4"
SELECT rel_id, p1, p2, p3, p4, p5, p6 …Run Code Online (Sandbox Code Playgroud) 我们有一个 PHP 命令行脚本来对数据库进行版本控制。每当开发人员添加新的数据库补丁时,我们都会运行此脚本。
该脚本使用 MySQL 命令行运行补丁:
system('mysql --user=xxx --password=xxx < patch.sql');
Run Code Online (Sandbox Code Playgroud)
但是,MySQL 5.6 现在发出以下警告:
警告:在命令行界面上使用密码可能不安全
这显然是正确的,但对用户来说可能是也可能不是问题。
请注意,我不想依赖外部密码文件。
我正在尝试允许远程服务器访问当前与 Web 应用程序共享 Linux 服务器的 MySQL 实例。根据文档,唯一可能的方法(除非我没有正确理解)是将bind-address指令设置为0.0.0.0,这会导致 MySQL 允许从任何可以生成有效用户的 IP 进行访问。
所以,两个问题:
在 cPanel 上,当我以 root 身份登录并键入“mysql”而没有主机名和密码时,它使我可以直接访问 mysql root 用户。
我想为我的一台非 cpanel 服务器执行此操作,其中 linux root 用户以与在 cPanel 上相同的方式获取密码较少的登录到 mysql root 用户。
这可能吗 ?
我在 OS X 10.6.1 上运行 MySQL 5.0.45,但我无法让 MySQL 记录任何内容。我正在调试一个应用程序,需要查看所有查询和错误。
我添加到etc/my.cnf:
[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log
Run Code Online (Sandbox Code Playgroud)
我使用 sudo 创建了两个日志文件,将权限设置为 644,然后重新启动 MySQL。
我提到了OS X 上我的 mysql 日志在哪里?以便排除故障。
跑步:
ps auxww|grep [m]ysqld
Run Code Online (Sandbox Code Playgroud)
返回:
_mysql 71 0.0 0.8 646996 15996 ?? S 7:31PM 0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql 46 0.0 0.0 600336 744 ?? Ss 7:30PM 0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe
Run Code Online (Sandbox Code Playgroud)
并运行:
$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'
Run Code Online (Sandbox Code Playgroud)
返回:
log /var/log/mysqld.log
log-bin …Run Code Online (Sandbox Code Playgroud) 默认情况下,MySQL InnoDB 将所有数据库的所有表存储在一个全局文件中。您可以通过在配置中设置 innodb_file_per_table 来更改这一点,然后为每个表创建一个数据文件。
我想知道为什么innodb_file_per_table默认情况下不启用。使用它有什么缺点吗?
我有很好的网络(专用)服务器,具有良好的内存资源:
System information
Server load 2.19 (8 CPUs)
Memory Used 29.53% (4,804,144 of 16,267,652)
Swap Used 10.52% (220,612 of 2,097,136)
Run Code Online (Sandbox Code Playgroud)
如您所见,当有大量可用内存时,我的服务器正在使用交换。
这是正常的还是配置或编码有问题?
注意
,由于某种原因,我的 MySQL 进程使用了超过 160% 的 CPU 功率;我不知道为什么,但我没有超过 70 个同时用户......
所以......可能我是个白痴,但我被卡住了。我刚刚在 Digial Ocean 上设置了 CentOS 7,但似乎无法运行 MariaDB/MySQL 服务器。
一些输出
[root@hostname ~]# yum list installed |grep maria
mariadb.x86_64 1:5.5.37-1.el7_0 @updates
mariadb-libs.x86_64 1:5.5.37-1.el7_0 @updates
mariadb-server.x86_64 1:5.5.37-1.el7_0 @updates
Run Code Online (Sandbox Code Playgroud)
这样就安装好了,我们至少可以看到客户端吗?
[root@hostname ~]# which mysql
/bin/mysql
Run Code Online (Sandbox Code Playgroud)
让我们尝试启动服务器,只是为了好玩
[root@hostname ~]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
Failed to issue method call: Unit mysqld.service failed to load: No such file or directory.
[root@hostname ~]# mysqld
-bash: mysqld: command not found
[root@hostname ~]# mysql.server start
-bash: mysql.server: command not found
[root@hostname ~]#
Run Code Online (Sandbox Code Playgroud)
这就是我迷路的地方。查看实际安装的内容,没有服务器/守护程序
[root@hostname ~]# ls …Run Code Online (Sandbox Code Playgroud)