0
点赞
收藏
分享

微信扫一扫

安装mysql二进制

小迁不秃头 2021-09-25 阅读 71
Mysql

1.Mysql 5.7.32 二进制安装

1.1 下载并安装mysql二进制

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz

1.2 创建用户 指定家目录是/data/mysql

mkdir /data
useradd  -r -d /data/mysql -s /sbin/nologin -u 306 mysql
或
useradd -r -s /sbin/nologin mysql
mkdir /data/mysql
chown -R mysql.mysql /data/mysql

1.3 解压并创建连接

tar xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql
chgrp mysql /usr/local/mysql/ 

1.4 修改环境变量

cat >/etc/profile.d/mysql.sh <<EOF 
export PATH=/usr/local/mysql/bin:\$PATH
EOF
source /etc/profile.d/mysql.sh

1.5 初始化数据库

报错原因: Linux系统中缺少libaio-devel 软件包
解决:
yum install -y libaio-devel
注意如果有报错信息,修复完成后 需要执行
rm -rf /data/mysql/* 
删除数据文件后再次执行初始化

第一种 自动设置安全策略
1.初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)
2.密码复杂度:长度:超过12位 复杂度:字符混乱组合
3.密码过期时间180天

mysqld --initialize --user=mysql --basedir=/usr/local/mysqll --datadir=/data/mysql

第二种 初始化数据,初始化管理员的密码为空

mysqld --initialize-insecure  --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

mariadb及 mysql 5 6 版本的 初始化方式

/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql 

1.6 配置文件

[root@db01 ~]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
                      my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default

配置文件 路径 优先级 /etc/my.cnf << /etc/mysql/my.cnf <<~/my.cnf
如果有重复参数 谁的优先级越大的生效
但是,如果启动时加入了--defaults-file=xxxx时,以上的所有文件都不会读取. 这种多实例的时候会用到。

 cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
server_id=6
port=3306
innodb_file_per_table=on

[mysql]
socket=/tmp/mysql.sock
prompt=3306 [\\d]>
EOF

mariadb及 mysql 5 6 版本的 初始化方式

cd /usr/local/mysql
cp support-files/my-huge.cnf /etc/my.cnf 
vim /etc/my.cnf
datadir =   /data/mysql
innodb_file_per_table   =   on  #将数据库中没有表分成单个文件
skip_file_resolve   =   on  ## 这个有bug 禁止使用主机名解析 

1.7 启动mysql

 cd /usr/local/mysql/support-files
./mysql.server start
Starting MySQL.Logging to '/data/mysql/db01.err'.
 SUCCESS! 
cp mysql.server    /etc/init.d/mysqld
##加入服务 centos6
cp support-files/mysql.server /etc/init.d/mysqld 拷贝脚本到服务中
chkconfig --add mysqld #加入服务
chkconfig mysqld on #开机启动
service mysqld start #启动服务 如果报错无法启动 rm -rf /app/data/* 删除 重新生成文件 在启动

使用systemd管理mysql

cat > /etc/systemd/system/mysqld.service  <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 500
EOF
systemctl daemon-reload
systemctl  start  mysqld.service
systemctl  stop  mysqld.service
systemctl  start/stop/restart/status   mysqld

1.8 修改密码

mysqladmin -uroot -p password admin888

mariadb 执行下列命令

mysql_secure_installation

1.9 忘记管理员密码

systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &    ##启动跳过认证 与 网络连接 以socket启动
mysql> flush privileges;
mysql>  alter user root@'localhost' identified by '123456';
pkill mysqld
systemctl start  mysqld
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
mkdir /data
useradd  -r -d /data/mysql -s /sbin/nologin -u 306 mysql
mkdir /data/mysql
chown -R mysql.mysql /data/mysql
tar xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql
chgrp mysql /usr/local/mysql/ 

cat >/etc/profile.d/mysql.sh <<EOF 
export PATH=/usr/local/mysql/bin:\$PATH
EOF
source /etc/profile.d/mysql.sh
mysqld --initialize-insecure  --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
server_id=6
port=3306
innodb_file_per_table=on
secure-file-priv=/tmp

[mysql]
socket=/tmp/mysql.sock
prompt=3306 [\\d]>
EOF

cat > /etc/systemd/system/mysqld.service  <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 500
EOF
systemctl daemon-reload
systemctl  start  mysqld.service

1.10 mysql连接方式 2种

mysql 的常用命令

-u 用户
-h 主机
-p 密码
-P 端口
-S sockt文件
-e 免交互
< 导入
TCP/IP方式(远程、本地):
mysql -uroot -p123456 -h192.168.122.103 -P3306
或
mysql -u root -p 123456 -h 192.168.122.103 -P 3306  ##这两张都可以 执行都不会报错
Socket方式(仅本地):
mysql -uroot -p123456 -S /tmp/mysql.sock

localhost 本地sock登录 localhost
ip地址 网络登录 ip地址

MariaDB [(none)]> show processlist;
+-------+--------+----------------------+--------+---------+------+-------+------------------+----------+
| Id    | User   | Host                 | db     | Command | Time | State | Info             | Progress |
+-------+--------+----------------------+--------+---------+------+-------+------------------+----------+
| 23390 | root   | localhost:44206      | xxb    | Sleep   |   35 |       | NULL             |    0.000 |
| 87386 | root   | localhost:60060      | NULL   | Query   |    0 | NULL  | show processlist |    0.000 |
| 87393 | jpress | 192.168.122.12:47694 | jpress | Sleep   |    3 |       | NULL             |    0.000 |
+-------+--------+----------------------+--------+---------+------+-------+------------------+----------+

1.11 授权用户

常用权限

ALL:
SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
ALL : 以上所有权限,一般是普通管理员拥有的
with grant option:超级管理员才具备的,给别的用户授权的功能

授权

grant all on wordpress.* to wordpress@'192.168.122.%' identified  by '123';

查看授权

MariaDB [(none)]> show grants for jpress@"192.168.122.%";
+-------------------------------------------------------------------------------------------------------------------+
| Grants for jpress@192.168.122.%                                                                                   |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jpress'@'192.168.122.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `jpress`.* TO 'jpress'@'192.168.122.%'                                                    |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

回收权限

revoke  delete on jpress.*  from jpress@"192.168.122.%";

注意 mysql 8.0后 必须 先创建用户 才能授权

用户名@'白名单'
create user wordpress@'192.168.122.%' identified by '123';
grant all on wordpress.* to wordpress@'192.168.122.%' ;
举报

相关推荐

0 条评论