mysql 相关操作
1150 字
6 分钟
mysql 相关操作
windows 下 mysql server 安装
1. 下载安装包
- 官方下载页面:https://dev.mysql.com/downloads/mysql/
- 直接下载(MySQL 8.0.46):https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.46-winx64.zip
下载后解压到目标目录,例如 D:\mysql-8.0.46-winx64。
2. 创建配置文件
在 MySQL 解压目录下新建 my.ini 文件,内容如下:
[mysqld]port=3306basedir=D:\\mysql-8.0.46-winx64datadir=D:\\mysql-8.0.46-winx64\\datamax_connections=2000max_connect_errors=1000character-set-server=UTF8MB4default-storage-engine=INNODBdefault_authentication_plugin=mysql_native_password
max_allowed_packet = 1Gevent_scheduler=ONsecure_file_priv=innodb_buffer_pool_size=256Mtransaction-isolation = READ-COMMITTEDtransaction-read-only = OFFskip-log-binsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mysql]default-character-set=UTF8MB4
[client]port=3306default-character-set=UTF8MB4注意:
basedir和datadir需替换为实际路径,路径中的反斜杠需要双写(\\)。
3. 初始化数据库
mysqld --defaults-file="D:\mysql-8.0.46-winx64\my.ini" --initialize --console初始化完成后,控制台会输出初始随机密码,请妥善记录。
提示:如果初始化时提示缺少 DLL 文件,说明系统缺少 Microsoft Visual C++ 运行库。请下载 微软常用运行库合集 2024.11.07 安装后重试。
4. 安装服务并启动
mysqld install MySQL5. 检查端口
netstat -ano|findstr "3306"6. 修改 root 密码
使用初始密码登录(假设初始密码为 jlk7k;Yn0iIf):
mysql -uroot -p'jlk7k;Yn0iIf'登录后修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@098';FLUSH PRIVILEGES;7. 切换认证插件(可选)
如需兼容旧版客户端,可将认证方式改为 mysql_native_password:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Admin@098';FLUSH PRIVILEGES;8. 开启远程访问
创建允许任意主机连接的 root 用户:
CREATE USER 'root'@'%' IDENTIFIED BY 'Admin@098';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;sql_mode 修改
- 修改 mysql 全局配置文件 my.conf/my.ini/mysqld.cnf 加入以下内容
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION- 重启 mysql

配置文件修改
Ubuntu 下 mysql server 安装
1. 安装 MySQL Server
apt updateapt install mysql-server-8.02. 检查状态并设置开机自启
# 检查状态systemctl status mysql# 设置开机自启systemctl enable mysql3. 初始登录(免密或使用临时密码)
Ubuntu 安装 MySQL 后,root 用户默认使用 auth_socket 插件(无需密码)或生成临时密码。建议先用 sudo 免密登录:
sudo mysql -u root如果已设密码,则用:
mysql -u root -p4. 修改 root@localhost 认证方式和密码
将本地 root 的认证插件改为 mysql_native_password 并设置强密码(这是为了兼容旧客户端和远程工具):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'lenglian_dba@KY2024';FLUSH PRIVILEGES;5. (可选)开放 root 远程访问
注意:生产环境建议创建专用用户而非开放 root 远程,以下仅供测试或管理需要。
若 'root'@'%' 已存在,先删除重建(避免冲突);若不存在则直接创建:
-- 删除可能存在的远程 root(谨慎操作)DROP USER IF EXISTS 'root'@'%';
-- 创建远程 root 并设置密码CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'lenglian_dba@KY2024';
-- 授予全部权限GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;6. 确保本地 root 权限完整(通常已有)
如果之前权限被修改,可重新授予:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES;7. 退出并测试连接
EXIT;本地测试:
mysql -u root -p -h localhost远程测试(需确保 MySQL 绑定地址为 0.0.0.0 且防火墙开放 3306):
mysql -u root -p -h <服务器IP>8. 完整脚本(可直接复制执行)
-- 登录后执行以下全部ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'lenglian_dba@KY2024';FLUSH PRIVILEGES;
DROP USER IF EXISTS 'root'@'%';CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'lenglian_dba@KY2024';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;FLUSH PRIVILEGES;
-- 确保 localhost 权限GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES;mysql 分区
先给原有数据分区
alter table tbName partition BY RANGE (fieldName) ( PARTITION p201802 VALUES LESS THAN (TO_DAYS('2018-03-01')), PARTITION p201803 VALUES LESS THAN (TO_DAYS('2018-04-01')));查询分区
select partition_name part, partition_expression expr, partition_description descr, table_rowsfrom information_schema.partitions where table_schema = schema() and table_name='tbName';自动增加分区函数(按月)
DELIMITER $$#该表所在数据库名称USE `dbName`$$DROP PROCEDURE IF EXISTS `create_partition_by_month`$$CREATE PROCEDURE `create_partition_by_month`(IN_SCHEMANAME VARCHAR(64), IN_TABLENAME VARCHAR(64))BEGIN DECLARE ROWS_CNT INT UNSIGNED; DECLARE PARTITIONNAME VARCHAR(16); DECLARE ENDTIME_DATETIME VARCHAR(30); SET PARTITIONNAME = DATE_FORMAT( NOW(), 'p%Y%m' ); SET ENDTIME_DATETIME = DATE_FORMAT((NOW() + INTERVAL 1 MONTH), '%Y-%m-01'); SELECT COUNT(*) INTO ROWS_CNT FROM information_schema.partitions WHERE table_schema = IN_SCHEMANAME AND table_name = IN_TABLENAME AND partition_name = PARTITIONNAME; IF ROWS_CNT = 0 THEN SET @SQL = CONCAT( 'ALTER TABLE `', IN_SCHEMANAME, '`.`', IN_TABLENAME, '`', ' ADD PARTITION (PARTITION ', PARTITIONNAME, " VALUES LESS THAN (UNIX_TIMESTAMP('", ENDTIME_DATETIME ,"')) ENGINE = InnoDB);" ); PREPARE STMT FROM @SQL; EXECUTE STMT; DEALLOCATE PREPARE STMT; ELSE SELECT CONCAT("partition `", PARTITIONNAME, "` for table `",IN_SCHEMANAME, ".", IN_TABLENAME, "` already exists") AS result; END IF;END$$DELIMITER ;新增事务
DELIMITER $$#该表所在的数据库名称USE `datong_collect`$$CREATE EVENT IF NOT EXISTS `gps_part_manage`ON SCHEDULE EVERY 1 MONTH #执行周期,还有天、月等等STARTS '2018-04-01 00:00:00'ON COMPLETION PRESERVEENABLECOMMENT 'Creating partitions'DO BEGIN #调用刚才创建的存储过程,第一个参数是数据库名称,第二个参数是表名称 CALL create_partition_by_month('datong_collect','tb_gps_trail');END$$DELIMITER ;删除分区:
alter table voice drop partition p201907;获取时间
select curdate(); #获取当前日期select last_day(curdate()); #获取当月最后一天。select DATE_ADD(curdate(),interval -day(curdate())+1 day); #获取本月第一天select date_add(curdate()-day(curdate())+1,interval 1 month);# 获取下个月的第一天select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual;#获取当前月的天数支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

苏公网安备32021402002558号