这是一个很大的数据库,而且真的很乱,我想对所有表中的所有列进行排序,而不需要手动拖放......
编辑我知道订单无关紧要。这是一种设计思想。如果订购了东西,阅读和查找会容易得多。,我还有很多列,如“is_visible”、“is_editable”等……如果它们都放在一起看起来会更好。
这是一个很大的数据库,而且真的很乱,我想对所有表中的所有列进行排序,而不需要手动拖放......
编辑我知道订单无关紧要。这是一种设计思想。如果订购了东西,阅读和查找会容易得多。,我还有很多列,如“is_visible”、“is_editable”等……如果它们都放在一起看起来会更好。
我需要将很多 mysql MyISAM 表迁移到一个新的 InnoDb 版本,添加外键约束。我可以转储和导入,禁用第一个外键检查。
但是,当我再次激活外键检查时,有没有办法检查哪些表存在约束问题(无需手动检查所有表)?
我想知道 GDPR 对多租户 SaaS 应用程序的 MySQL DB 的约束是什么。虽然每个多租户客户使用单个数据库并限制访问的解决方案可能会很好,但是单个数据库呢?
我如何保证对单个租户的数据进行适当的隔离?纯应用解决方案对我来说似乎很弱(...每个查询的 tenantID=xx)。
我是否会被迫为每个表或大多数查询创建受限视图?MySQL 6.7 将如何处理这个问题?我已经阅读了有关索引视图和性能的信息,但我不确定如果将每个表切换到视图,我的应用程序会发生什么。
新版本的MySQL有改进吗?我应该使用像 MaxScale 这样的数据库代理吗?或者也许这是切换到 postgres 或其他数据库的充分理由?
我在 AWS 上的 Linux EC2 实例上安装了 mysql/Aurora 1.14 有一个非常奇怪的问题。
我有一个用户能够远程连接到实例,但不能在本地连接。
select user,host from mysql.user;
user | host
admin| %
我可以从外部与该用户联系
mysql -u admin -pxxxx -h ip
但是当我在机器里面时
mysql -u admin -pxxx
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password: YES)
我尝试了其他几件事(有或没有 sudo)
mysql -u admin -pxxx -h localhost
mysql -u admin -pxxx -h 127.0.0.1
mysql -u admin -pxxx --proto=TCP
我也尝试过创建另一个用户
create user 'localtest'@'localhost' identified by 'pwd18';
grant all on mydb.* to 'localtest'@'localhost';
flush privileges;
mysql -u localtest -ppwd18 -h localhost
ERROR 1045 (28000): Access denied for user 'localtest'@'localhost' (using password: YES)
其他奇怪的事情是我在 mysql.user 中没有用户“root”。
如果我从远程尝试,使用用户 admin 将所有数据库上的所有权限授予 localtest,我会得到:
GRANT ALL PRIVILEGES ON *.* TO 'localtest'@'localhost'
Error Code: 1045. Access denied for user 'admin'@'%' (using password: YES)
没有更多的想法。日志不是很有用,只是说“访问被拒绝”
按照要求:
SELECT USER()
[email protected] admin@%
SHOW GRANTS FOR 'admin'@'%'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, LOAD FROM S3, SELECT INTO S3 ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*xxxxxx' WITH GRANT OPTION
我还明确向用户'localtest'@'localhost'提供了所有上述授权,但没有任何改变
我有 mysql binlogs 用于通过 GTID 进行复制。
我正在尝试显示执行的更新/插入语句,如下所示:
mysqlbinlog --base64-output=DECODE-ROWS mysql-bin.000024
但我看到的都是这样的,没有更新或插入 stmt 的痕迹:
SET TIMESTAMP=1431681617/*!*/;
BEGIN
/*!*/;
# at 746987321
# at 746987392
# at 746987484
#150515 11:20:17 server id 1 end_log_pos 746987515 CRC32 0xeb874754 Xid = 997501767
COMMIT/*!*/;
# at 746987515
#150515 11:20:22 server id 1 end_log_pos 746987563 CRC32 0xc5ece64a GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'a4ade293-c63a-11e4-94cf-005056944a56:2059057'/*!*/;
# at 746987563
#150515 11:20:22 server id 1 end_log_pos 746987650 CRC32 0x92296355 Query thread_id=71622 exec_time=0 error_code=0
我不确定 GTID 复制的格式/配置以及在哪里寻找它......
mysqld 不再重新启动...在日志中,明显的原因是:
mysqld started
[Warning] Ignoring user change to 'root' because the user was set to 'mysql' earlier on the command line
[ERROR] /usr/libexec/mysqld: unknown variable 'password=mypassword'
mysqld ended
/etc/my.cnf 没有什么相关的,也没有这样的变量,顺便说一下,消息中有正确的 mysql root 密码值(!!!?):
[mysqld]
user=mysql
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Centos 5.9 上的 Mysql 5.0.95。重启前一切正常!!
也试过
/usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid --no-defaults
Starting mysqld daemon with databases from /var/lib/mysql
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld ended
我在 mysql.log 中看到这个错误:
InnoDb error: the age of last checkpoint is...which exceeds the log group capacity etc..
我想我明白了,但事实是它只在夜间运行时以最小负载发生,包含 100MB 数据库导入。
我导入的结果mysqldump --opt
,目的是复制一个数据库进行测试。
该错误表明日志文件增加了 10 倍。
考虑到我在正常的日常时间里绝不会达到这个限制,我想知道是否有另一种方法来处理这个问题,而不是更改日志文件大小并重新启动 mysql ...
导入操作的速度并不重要。
Mysql v5.1.69