Linux安装mysql(源码)
作者QQ:67065435 QQ群:669756510
本站内容全部为作者原创,转载请注明出处!
安装前的准备
yum -y --nogpgcheck \ install \ libaio \ libtool \ net-tools \ bison-devel \ libaio-devel \ ncurses-devel \ perl-Data-Dumper下载mysql-5.7.18
cd /root wget --no-check-certificate -c http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz wget --no-check-certificate -c http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18.tar.gz tar -xf mysql-5.7.18.tar.gz cd mysql-5.7.18运行cmake
cmake /root/mysql-5.7.18 \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DWITH_SYSTEMD=1 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/root \ -DDEFAULT_CHARSET=utf8mb4 \ make -j$(nproc) make -j$(nproc) install添加mysql用户
useradd mysql创建数据文件目录、所属组、用户改为mysql
mkdir /data/ mkdir /data/mysql/ chown -R mysql:mysql /etc/my.cnf chown -R mysql:mysql /data/mysql/ chown -R mysql:mysql /var/*/mysql* chown -R mysql:mysql /usr/local/mysql/修改SELinux
vim /etc/sysconfig/selinux SELINUX=disabled ESC :wq setenforce 0修改文件打开数上限
# 系统文件打开数上限 vim /etc/security/limits.conf * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535 ESC :wq # MySQL文件打开数上限 vim /usr/lib/systemd/system/mysqld.service LimitNOFILE=65535 ESC :wq systemctl daemon-reload修改配置文件
vim /etc/my.cnf [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] datadir=/data/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid # 如果是升级MySQL加上: # sql-mode = NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION ESC :wq初始化数据库配置
# 以下代码执行完之后,会在/data/mysql/mysql-error.log保存初始密码 su mysql /usr/local/mysql/bin/mysqld \ --initialize \ --user=mysql \ --datadir=/data/mysql \ --basedir=/usr/local/mysql # 查看初始密码 cat /var/lib/mysql/mysql.log|grep password添加mysqld.service
exit cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service详细配置
vim /usr/lib/systemd/system/mysqld.service # 将下面的配置覆盖整个文件内容 [Unit] Description=MySQL After=default.target network.target [Service] User=mysql Group=mysql Type=forking PIDFile=/data/mysql/mysqld.pid TimeoutSec=0 PermissionsStartOnly=true ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/data/mysql/mysql.pid $MYSQLD_OPTS EnvironmentFile=-/etc/sysconfig/mysql LimitNOFILE = 65535 Restart=on-failure RestartPreventExitStatus=1 PrivateTmp=false RestartSec=5 StartLimitInterval=0 [Install] WantedBy=multi-user.target ESC :wq启用mysqld.service
systemctl daemon-reload systemctl enable mysqld systemctl start mysqld测试配置是否正确,没有任何输出则表示一切正常
/usr/local/mysql/bin/mysqld_pre_systemd添加mysql到mysql用户环境变量
su mysql vim /home/mysql/.bash_profile PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/mysql/bin ESC :wq source /home/mysql/.bash_profile配置防火墙
systemctl unmask firewalld systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --zone=public --add-port=3306/tcp firewall-cmd --reload尝试连接mysql
# mysql默认用户为root mysql -u root -p password:************** #修改root[DB用户]初始密码 SET PASSWORD=PASSWORD('**************'); show databases; use mysql; show tables; select * from user \G;设置外部访问密码
# 数据库名-通配符及格式: *[允许操作所有数据库] %pay%[允许操作名字包含'pay'的数据库] mydatabase[仅允许操作'mydatabase'数据库] # 表名-通配符及格式: *[允许操作所有表] %pay%[允许操作名字包含'pay'的表] mytable[仅允许操作'mytable'表] # ip地址-通配符及格式: %/0.0.0.0[允许任意IP访问] xxx.xxx.xxx.xxx[仅限公网访问] 192.168.x.xxx[仅限局域网访问] localhost/127.0.0.1/::1[仅限本机访问] # 数据库授权格式 GRANT 权限名 ON 数据库名.数据表名 TO '数据用户'@'访问IP' IDENTIFIED BY '用户密码' WITH GRANT OPTION; # 为任意数据库表 任意操作 分配root用户,仅限本地访问 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '**************' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'root'@'::1' IDENTIFIED BY '**************' WITH GRANT OPTION; # 为任意数据库表 任意操作 分配mysql用户,任意IP访问(安装调试阶段、本地开发使用,用后即删) GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'%' IDENTIFIED BY '**************' WITH GRANT OPTION; # 为任意数据库表 增删改查 分配单独用户,为不同的业务分配专属用户 GRANT INSERT ON *.* TO 'insert1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION; GRANT DELETE ON *.* TO 'delete1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION; GRANT UPDATE ON *.* TO 'update1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION; GRANT SELECT ON *.* TO 'select1'@'127.0.0.1' IDENTIFIED BY '**************' WITH GRANT OPTION; # 刷新权限 FLUSH PRIVILEGES;