MySQL系列-安装与管理
最流行的关系型数据库,主要是用来存储用户数据、商品数据等等
mysql目前是属于oracle的旗下产品,oracle也是知名的关系型数据库,但它是收费的
另外还有一种非关系型数据redis、mongodb等
下载地址
https://dev.mysql.com/downloads/mysql/
source code源码安装
编译安装
yum install -y gcc gcc-c++ make tar openssl openssl-devel cmake ncurses ncurses-devel #安装依赖包
useradd -s /sbin/nologin mysql # 创建mysql用户
cd /usr/local/src
tar -zxvf mysql-boost-5.7.29.tar.gz
cd mysql-5.7.29
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0 -DWITH_SSL=yes -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 DWITH_BOOST=/usr/local/src/mysql-5.7.29/boost
make && make install
cp support-files/mysql.server /etc/init.d/mysqld #复制一个执行脚本
chmod a+x /etc/init.d/mysqld #赋予执行权限
检查mysql是否安装成功
/usr/local/mysql/bin/mysql --version
mysql的默认配置需要更改,转为默认配置太简洁 /etc/my.cnf
[mysqld] bind-address=127.0.0.1 #监听IP port=3306 #监听端口 datadir=/data/mysql #数据目录 socket=/tmp/mysql.sock #指定socket路径,默认就是/tmp/mysql.sock user=mysql skip-name-resolve slow_query_log=on #开启慢日志 long_query_time=1 slow_query_log_file=/data/mysql/mysql-slow.log #慢日志文件 expire_logs_days=2 innodb-file-per-table=1 #独立的表空间 innodb_flush_log_at_trx_commit = 2 #配置为1表示数据写入后马上写到磁盘,系统压力大。配置为2的话,会每秒执行一次写盘的操作,压力较小 log_warnings = 1 #警告信息写入日志 max_allowed_packet = 512M connect_timeout = 60 net_read_timeout = 120 [mysqld_safe] log-error=/data/mysql/mysqld.log pid-file=/data/mysql/mysqld.pid
Mysql启动前需要进行数据的初始化
mkdir -pv /data/mysql chown -R mysql:mysql /data/mysql yum install -y perl-Module-Install #数据初始化脚本依赖于per,所以先安装一个perl
5.7版本后初始化用--initialize
/usr/local/mysql/bin/mysqld --initialize --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql
2020-07-31T00:48:22.676786Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-07-31T00:48:22.678711Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2020-07-31T00:48:22.678760Z 0 [ERROR] Aborting
#大概意思是因为数据目录中有数据
[root@Nginx mysql]# ll /data/mysql/
发现里面确实有文件,将文件删除删除,初始化成功
初始化完启动mysql服务器
/etc/init.d/mysqld start #用提供的脚本启动
/etc/init.d/mysqld stop #用提供的脚本关闭
使用systemctl管理/usr/lib/systemd/system/mysqld.service
[Unit] Description=mysqld After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/etc/init.d/mysqld start ExecStop=/etc/init.d/mysqld stop [Install] WantedBy=multi-user.target
使用mysql客户端,不加这个命令,mysql命令是无法使用的
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/ #mysql命令经常使用

浙公网安备 33010602011771号