ubuntu(linux) mysql服务部署
2024年2月23日大约 2 分钟约 461 字
安装mysql
# 安装mysql
apt update
apt install mysql-server
mysql_secure_installation # 运行安全脚本(设置root密码、移除匿名用户、禁止root远程登录等)
systemctl enable mysql
# 允许远程访问mysql服务
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
port = 18307
bind-address = 0.0.0.0
max_connections = 2000 # mysql服务最大连接数
max_user_connections = 200 # 单账号最大连接数
default-time-zone = 'Asia/Shanghai' # 时区配置
server_id = 2 # mysql服务唯一id,默认为1。主重备份等多个服务器场景需要设置。
systemctl restart mysql
# 设置root密码
mysql -u root
CREATE USER 'root'@'%' IDENTIFIED BY 'new_password';
# ALTER USER 'root'@'%' IDENTIFIED BY 'new_password'; # 已有用户时,使用该命令修改密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; # 允许root远程登录
FLUSH PRIVILEGES;
迁移数据库
# 在源服务器上备份数据库
mysqldump -u root -p --all-databases --routines --triggers --events --flush-privileges > all_databases.sql
# 将备份文件传输到目标服务器
scp -P 19022 all_databases.sql root@192.168.1.101:/root
# 在目标服务器上恢复数据库
mysql -u root -p < /root/all_databases.sql
以下是这些选项的解释:
- --all-databases: 包括所有数据库、表结构、数据、视图、数据库用户和权限。
- --routines:包括存储过程和函数在备份文件中。
- --triggers:包括触发器在备份文件中。
- --events:包括事件调度器在备份文件中。
- --add-drop-database:在每个数据库创建之前添加 DROP DATABASE 语句,确保恢复时会删除已有同名数据库。
- 注意如果导出的数据库包含mysql内置数据库,不可使用该选项,因为内置数据库不可删除。
- --flush-privileges:在恢复过程中刷新权限表,以确保新导入的用户和权限立即生效。
查询每个账号的连接数
SELECT user, count(user) as connections FROM information_schema.processlist GROUP BY user;