LNMP环境是指Linux、Nginx、MySQL和PHP的组合,常用于搭建网站服务器。在LNMP环境下管理MySQL数据库,主要包括安装、配置、优化、安全管理和备份恢复等方面。以下是详细的管理步骤和技巧:
在CentOS上:
sudo yum remove mariadb*
sudo yum install ncurses-devel gcc-c++ perl-module-install
tar -zxvf cmake-2.8.6.tar.gz -c /usr/src/
cd /usr/src/cmake-2.8.6
./configure && gmake && gmake install
tar -zxvf mysql-5.6.36.tar.gz -c /usr/src/
cd /usr/src/mysql-5.6.36
cmake -dcmake_install_prefix=/usr/local/mysql -dsysconfdir=/etc -ddefault_charset=utf8 -ddefault_collation=utf8_general_ci -dwith_extra_charsets=all
make && make install
groupadd mysql
useradd -s /sbin/nologin -g mysql -m mysql
chown -r mysql:mysql /usr/local/mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
echo "path=$path:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile
systemctl start mysqld
mysqladmin -u root password 'wzh.2005'
在Ubuntu上:
sudo apt update
sudo apt install mysql-server
基本配置:
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/my.cnf
),进行必要的修改,例如允许远程访问:[mysqld]
bind-address = 0.0.0.0
安全设置:
为了提高安全性,可以运行以下命令来设置root密码和删除匿名用户:
sudo mysql_secure_installation
按照提示操作,包括设置root密码、删除匿名用户、禁止远程root登录等。
备份数据库:
使用mysqldump
命令备份数据库。这个命令可以将数据库中的数据和结构导出为SQL文件。基本语法如下:
mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件名].sql
例如:
mysqldump -u root -p123456 mydatabase > mydatabase_backup.sql
在提示时输入密码。
--all-databases
选项:mysqldump --all-databases -u [用户名] -p[密码] > all_databases_backup.sql
恢复数据库:
将备份文件(如mydatabase_backup.sql
)复制到MySQL服务器的数据目录下。对于不同的操作系统,数据目录的位置可能不同:
/var/lib/mysql
或 /var/lib/mysql/[数据库名]
C:\ProgramData\MySQL\MySQL Server [版本号]\data
mysql
命令导入备份文件恢复数据库。基本语法如下:mysql -u [用户名] -p[密码] [数据库名] < [备份文件名].sql
例如:
mysql -u root -p123456 mydatabase < mydatabase_backup.sql
在提示时输入密码。
--all-databases
选项:mysql -u root -p123456 --all-databases < all_databases_backup.sql
基础优化配置:
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/my.cnf
),调整以下参数:[mysqld]
innodb_buffer_pool_size = 4G # 根据服务器内存调整
key_buffer_size = 128 M
max_allowed_packet = 64 M
sudo systemctl restart mysql
SQL查询优化技巧:
SELECT *
,只查询必要字段。JOIN
替代子查询(大多数情况下)。LIMIT
分页。OR
条件,改用UNION ALL
。访问控制和身份验证:
传输加密:
使用SSL/TLS协议加密数据库与客户端之间的数据传输,防止数据在传输过程中被截获。
通过以上步骤和技巧,您可以在LNMP环境下有效地管理MySQL数据库,确保其安全性、稳定性和高性能。