Linux 中文件和文件夹获取 Mysql 权限(selinux)



今天在 linux 系统上移动 Mysql 的数据库目录


配置如下:


/etc/my.cnf


[mysqld]
datadir=/home/mysql
socket=/var/lib/mysql/mysql.sock


 


更改完配置文件重启MYSQL的时候出现的以下问题


 


110222 11:15:07 mysqld_safe Starting mysqld daemon with databases from /home/mysql
110222 11:15:07 [Warning] Can't create test file /home/mysql/localhost.lower-test
110222 11:15:07 [Warning] Can't create test file /home/mysql/localhost.lower-test
 /usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
110222 11:15:07 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
110222 11:15:07  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
110222 11:15:07 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended


 


当初以为只是文件或文件夹权限问题,把所有对应的目录和文件的权限改成读写状态...还是没用...


在网上找了一会儿,找到解决方法了~


解决方法如下:


#在终端中先输入下面这一行


chown -R mysql:mysql /home/data/mysql
#在输入下面的一行就OK了


chcon -R -t mysqld_db_t /home/mysql


#重启下MYSQL试试~


/etc/init.d/mysqld restart
### 设置文件夹权限的方法 在不同的操作系统中,设置文件夹权限的方式有所不同。以下是针对 Linux Windows 的具体方法。 #### 1. **Linux 系统中的文件夹权限配置** 在 Linux 中,文件文件夹权限由 `chmod` 命令控制,同时也可以通过调整 SELinux 策略来进一步增强安全性。如果需要授予某个用户或组对指定文件夹的操作权,可以按照以下方式执行: - 使用 `chmod` 修改权限: ```bash chmod 755 /path/to/folder ``` 上述命令会赋予文件夹读取、写入执行权限给拥有者,以及只读执行权限给其他用户[^1]。 - 更改文件夹的所有者: ```bash chown user:group /path/to/folder ``` 这里将 `/path/to/folder` 的所有权分配给了指定的用户组[^4]。 对于某些特殊场景(如 MySQL 数据库),还需要考虑 SELinux文件系统的额外约束。可以通过临时禁用 SELinux 或重新标记上下文来解决问题: ```bash setenforce 0 semanage fcontext -a -t mysqld_db_t "/path/to/mysql(/.*)?" restorecon -Rv /path/to/mysql ``` #### 2. **Windows 系统中的文件夹权限配置** 在 Windows 上,可以通过图形界面或者 PowerShell 脚本来更改文件夹权限。例如,在 Win10 中遇到“没有权限访问此文件夹”的提示时,可采取以下措施之一解决[^2]: - 提供管理员权限运行资源管理器; - 手动编辑 NTFS 权限列表,添加当前用户的完全控制项。 自动化这一过程可通过 C# 编程实现,利用 .NET Framework 提供的功能接口完成复杂的权限设定工作[^3]: ```csharp using System; using System.IO; using System.Security.AccessControl; class Program { static void Main() { string folderPath = @"C:\Example"; DirectorySecurity securityRules = Directory.GetAccessControl(folderPath); FileSystemAccessRule rule = new FileSystemAccessRule( "Everyone", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow); securityRules.AddAccessRule(rule); Directory.SetAccessControl(folderPath, securityRules); } } ``` 以上代码片段展示了如何向某文件夹添加全局全控规则。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值