CentOS MySQL 使用Insert 添加用户 注意事项

本文介绍了如何在MySQL中创建用户并配置相应的数据库权限,包括解决特定字段无默认值的问题及远程访问设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实际上 使用insert可能出现 Field 'ssl_cipher' doesn't have a default value 不建议使用

只是今天使用了一次 把遇到的错误记录下来


创建用户:

mysql> insert into mysql.user( Host, User, Password ) values ( 'localhost', 'boss', password('boss') );

这样就创建了一个用户名密码都为BOSS的用户

如果遇到 Field 'ssl_cipher' doesn't have a default value

可以用 以下语句指定ssl_cipher

mysql> insert into mysql.user( Host,  User,  Password, ssl_cipher, x509_issuer, x509_subject) values ( 'localhost', 'boss', password('boss'), ' ', ' ', ' ' );



创建用户需要的数据库:

mysql> create database db1;


授权BOSS用户 db1数据库的所有权限:

mysql> grant all privileges on db1.* to boss@'localhost' identified by 'boss';


刷新系统权限表:

mysql>flush privileges;


开启远程访问权限:

insert into mysql.user(Host,User,Password) values( '%','boss',password('boss'));

重点是那个%,当然%也可以替换为具体IP 


千万不要  UPDATE user SET Host='%' WHERE User='boss' AND Host='localhost' LIMIT1;


这样会刷掉原有记录而无法从本地登录


(错误信息 Access denied for user 'root'@'localhost' (using password: YES) )


update 过后虽然你的访问权限是%


看似是可以从任何主机访问


但是确无无法使用mysql -u boss -pboss登录,不加 -h 参数默认是localhost(很奇怪)


至于mysql -u boss -pboss -h127.0.0.1没有测试过,有兴趣的朋友可以测试一下.



<think>好的,用户想了解在Linux上部署MySQL注意事项,包括配置、安全性和性能优化等方面。根据之前的对话,我之前已经给出了一个关于医疗记录管理的MySQL部署方案,其中提到了加密、访问控制、备份、索引优化等内容。现在需要结合用户提供的引用资料,进一步整理注意事项。 首先,我需要检查用户提供的引用内容。引用1提到了安装Sybase和MySQL的步骤,但用户现在只关心MySQL,所以可能可以忽略Sybase部分。引用2和引用3是关于安装时的配置,特别是lower_case_table_names的设置、配置文件路径、字符编码设置。引用4提到宝塔面板部署,但用户可能更关注手动配置,不过宝塔面板的注意事项可能对部分用户有用,但可能不是重点。 用户的需求是部署MySQL时的注意事项,包括配置、安全性和性能优化。根据之前的回答,我需要将之前的方案中的相关部分提取出来,并结合引用中的信息补充细节。例如,用户引用2提到了配置文件中的lower_case_table_names,这可能涉及大小写敏感的问题,需要包含在配置注意事项中。引用3提到的字符编码问题,需要强调在配置文件中设置utf8mb4。此外,引用2中的配置文件路径和参数设置也是需要注意的地方。 另外,用户可能还需要知道安装后的安全加固步骤,比如修改默认密码、删除测试数据库、创建专用用户等,这些在之前的回答中已有涉及,但需要结合引用中的信息,比如使用mysql_secure_installation命令(在引用2中提到过)。 性能优化方面,之前的回答提到了缓冲池大小、SSD、分区表、索引策略等,需要再次强调,并可能补充更多细节,如查询缓存配置(在引用2中提到query_cache_size)。 还要考虑用户可能遇到的常见问题,比如字符集设置错误(引用3)、大小写敏感问题(引用2)、配置文件路径错误(引用2)、权限设置(引用2中的分配组问题)等,这些都需要在注意事项中提到。 最后,需要确保结构清晰,分点列出安装配置、安全性、性能优化、常见问题等部分,每个部分包含具体的步骤和建议,并引用提供的资料中的相关内容,如配置文件示例、命令等。 可能需要检查是否有遗漏的重要点,比如备份策略、日志管理、监控工具的使用,以及如何应用安全补丁等。同时,用户可能对如何验证配置是否生效感兴趣,比如通过SQL命令检查变量状态,如SHOW VARIABLES LIKE 'character_set%'; 或检查日志文件位置是否正确。 总结来说,需要整合之前的回答和用户提供的引用资料,形成一个结构化的指南,涵盖部署MySQL时的各个关键方面,确保用户能够顺利安装、安全配置并优化性能,同时避免常见错误。</think>### 在 Linux 上部署和优化 MySQL注意事项 #### 一、安装与基础配置 1. **系统环境准备** - 确保 Linux 系统为最新稳定版本(如 Ubuntu 22.04 LTS 或 CentOS 7+)。 - 关闭 SELinux 或配置策略(避免权限冲突): ```bash sudo setenforce 0 # 临时关闭 sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 永久关闭 ``` 2. **安装注意事项** - **字符编码设置**: 默认字符集可能导致中文乱码,需在配置文件(`/etc/my.cnf` 或 `/etc/mysql/mysql.conf.d/mysqld.cnf`)中强制使用 `utf8mb4`[^3]: ```ini [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci ``` 验证配置: ```sql SHOW VARIABLES LIKE 'character_set%'; -- 确认字符集生效[^3] ``` - **表名大小写敏感**: 在 LinuxMySQL 默认区分表名大小写,若需统一,需设置: ```ini [mysqld] lower_case_table_names = 1 # 0-区分大小写,1-不区分[^2] ``` **注意**:此参数需在初始化数据库前配置,否则需重建数据目录。 3. **配置文件管理** - 配置文件路径需明确,避免多文件冲突。典型路径: ```ini basedir = /usr/local/mysql # MySQL 安装目录 datadir = /var/lib/mysql # 数据存储目录[^2] ``` - 备份默认配置后覆盖: ```bash cp /etc/my.cnf /etc/my.cnf.bak # 备份原始配置 cp custom_config.cnf /etc/my.cnf # 使用自定义配置[^2] ``` --- #### 二、安全性强化 1. **初始化安全设置** - 运行 `mysql_secure_installation` 脚本: - 删除匿名用户 - 禁止 root 远程登录 - 删除测试数据库 `test` - 重载权限表 2. **访问控制** - **最小权限原则**:为应用创建独立用户,仅授予必要权限: ```sql CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'ComplexP@ssw0rd!'; GRANT SELECT, INSERT, UPDATE ON app_db.* TO 'app_user'@'192.168.1.%'; ``` - **防火墙限制**:仅允许信任 IP 访问 MySQL 端口(默认 3306): ```bash sudo ufw allow from 192.168.1.0/24 to any port 3306 ``` 3. **加密与审计** - **启用 SSL/TLS**:防止数据窃听(需生成证书并配置)[^1]: ```ini [mysqld] ssl-ca = /etc/mysql/ssl/ca.pem ssl-cert = /etc/mysql/ssl/server-cert.pem ssl-key = /etc/mysql/ssl/server-key.pem ``` - **审计日志**:记录所有敏感操作(需安装审计插件): ```sql INSTALL PLUGIN audit_log SONAME 'audit_log.so'; -- 企业版或 Percona 支持[^3] ``` --- #### 三、性能优化 1. **内存与存储配置** - **缓冲池优化**: InnoDB 缓冲池大小通常设为物理内存的 **70%~80%**: ```ini [mysqld] innodb_buffer_pool_size = 12G # 根据内存调整 innodb_flush_method = O_DIRECT # 避免双缓存,提升 SSD 性能[^1] ``` - **日志文件分离**:将日志存储到独立磁盘: ```ini innodb_log_group_home_dir = /mnt/ssd_logs/ ``` 2. **查询优化** - **索引策略**: - 对高频查询字段(如时间、状态)创建复合索引 - 使用覆盖索引减少回表操作 ```sql CREATE INDEX idx_user_status ON orders(user_id, status); ``` - **慢查询分析**: 启用慢查询日志并定期分析: ```ini [mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 # 记录执行超过2秒的查询 ``` 3. **连接管理** - 调整最大连接数,避免资源耗尽: ```ini max_connections = 500 thread_cache_size = 50 # 减少线程创建开销 ``` --- #### 四、运维与监控 1. **备份策略** - 每日全量备份 + 二进制日志增量备份: ```bash mysqldump --single-transaction --master-data=2 -u root -p app_db > full_backup.sql ``` - 使用 `cron` 定时任务自动化备份[^1]。 2. **监控工具** - 基础监控:通过 `SHOW STATUS` 和 `SHOW PROCESSLIST` 实时查看状态。 - 高级方案:部署 Prometheus + Grafana 监控 QPS、连接数、缓存命中率等。 3. **故障排查** - **错误日志定位**: ```ini [mysqld] log_error = /var/log/mysql/error.log # 确保日志路径正确[^2] ``` - 常见问题: - **启动失败**:检查 `datadir` 权限(需属主为 `mysql` 用户)[^2] - **连接超时**:调整 `wait_timeout` 和 `interactive_timeout` 参数 --- #### 五、示例:完整配置文件片段 ```ini [mysqld] # 基础配置 basedir = /usr/local/mysql datadir = /var/lib/mysql port = 3306 socket = /tmp/mysql.sock # 安全配置 ssl-ca = /etc/mysql/ssl/ca.pem skip_name_resolve = ON # 禁用DNS反向解析 local_infile = OFF # 防止本地文件注入 # 性能配置 innodb_buffer_pool_size = 8G innodb_flush_log_at_trx_commit = 2 # 兼顾性能与持久化 query_cache_type = 1 query_cache_size = 64M # 字符集配置 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci ``` --- ### 相关问题 1. 如何检测 MySQL 是否存在未授权的远程访问风险? 2. 在 SSD 存储环境下,哪些 MySQL 参数需要特别调整? 3. 如何实现 MySQL 数据库的跨机房高可用架构? --- 通过以上配置和优化,可在 Linux 系统上构建安全、高效的 MySQL 服务。实际部署时需根据硬件配置和数据规模动态调整参数[^1][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值