MySQL数据库修改数据库名的三种方式

在Innodb数据库引擎下修改数据库名的方式与MyISAM引擎下修改数据库的方式完全不一样,如果是MyISAM可以直接去数据库目录中mv就可以,Innodb如果用同样的方法修改会提示相关表不存在。

第一种方法:

rename database olddbname to newdbname

这个是5.1.7到5.1.23版本可以用,但是官方不推荐,会有丢失数据的危险

第二种:

1.创建需要改成新名的数据库

2.mysqldum到处要改名的数据库

3.删除原来的旧库

这种方法是安全的,但是如果数据量大,会很耗时

3.第三种:

#!/bin/bash
# 假设将sakila数据库名改为new_sakila
# MyISAM直接更改数据库目录下的文件即可

mysql -uroot -p123456 -e 'create database if not exists new_sakila'
list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='sakila'")

for table in $list_table
do
    mysql -uroot -p123456 -e "rename table sakila.$table to new_sakila.$table"
done

这里用到了rename table更改表名的命令,但是如果新表名后面加数据库,将会将原来的数据库的表移动到新的数据库,所有这种方法既安全又快速。

作者:Atlas

出处:Atlas的博客 http://www.cnblogs.com/gomysql

### MySQL 访问权限不足错误 当遇到 `ERROR 1227 (42000) (ER_SPECIFIC_ACCESS_DENIED_ERROR): Access denied` 错误时,这通常意味着当前用户缺少执行特定操作所需的权限[^1]。为了修复此问题,建议采取以下措施: - **确认用户名和密码无误**:确保用于登录数据库的凭证正确。 - **授予适当权限**:如果确实需要更高的权限来完成某项任务,则应由管理员为该账户分配必要的特权。 ```sql GRANT ALL PRIVILEGES ON database.* TO 'username'@'host'; FLUSH PRIVILEGES; ``` 上述命令会赋予指定用户对某个库的所有权限,请根据实际情况调整范围并谨慎使用。 - **检查主机限制**:有时即使账号存在且有相应权利,在某些情况下也可能因为客户端IP未被列入白名单而遭到拒绝访问。 --- ### Git Clone 远程仓库失败 对于通过Git克隆远程存储库时报出HTTP Basic认证失败的情况,可能是因为本地缓存了旧的身份验证信息或是SSH密钥设置不当所致[^2]。处理方法包括但不限于: - 清除已保存于Credential Manager中的凭据; - 更新`.gitconfig`文件内的URL指向HTTPS而非SSH协议(反之亦然),以便切换身份验证方式; ```bash # 修改.git/config 或全局配置 ~/.gitconfig 中 remote.origin.url 字段 [remote "origin"] url = https://new-url-to-repo.git ``` - 配置新的SSH公私钥对,并将其添加到目标平台上的个人SSH Keys列表里。 --- ### SSH 登录 Ubuntu 被拒 尽管修改了 `/etc/ssh/sshd_config` 文件允许Root用户直接登陆,但如果依旧遭遇Connection Refused或Access Denied提示,可能是由于防火墙阻止端口通信或者是SELinux策略干扰造成的[^3]。尝试下面几种途径排查原因: - 使用命令行工具如ufw查看开放状态下的服务端口是否包含22号TCP端口; ```bash sudo ufw status verbose ``` - 如果启用了AppArmor安全模块,记得重启SSH守护进程使更改生效; ```bash sudo systemctl restart sshd.service ``` - 对于基于RHEL/CentOS系统的机器来说,还需留意SELinux上下文设定是否影响到了SFTP功能正常使用。 --- ### MinIO 存储桶对象不可达 假如MinIO实例返回“access denied”的响应码给客户端请求,那么除了考虑API调用者本身缺乏足够的授权之外,还应该审视Nginx反向代理层面上是否存在潜在隐患[^4]。具体做法如下: - 测试不经过任何中间件的情况下能否顺利获取资源,从而排除外部因素带来的不确定性。 ```nginx server { listen 80; server_name example.com; location / { proxy_set_header Host $http_host; proxy_pass http://localhost:9000/; } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值