“这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战”mysql
1. 平常启动sql
# /home/service/mysql/support-files/mysql.server start
Starting MySQL SUCCESS!
复制代码
2. 维护性任务启动shell
# mysqld_safe --skip-grant-tables --skip-networking &
[1] 12150
[root@VM-0-3-centos ~]# 2021-01-20T04:01:24.495644Z mysqld_safe Logging to '/data/mysql/data/VM-0-3-centos.err'.
2021-01-20T04:01:24.533210Z mysqld_safe Starting mysqld daemon with databases from /data/mysql/data
复制代码
这种状况下,咱们通常会将咱们须要的参数临时加到命令行中,同时咱们也会读取 /etc/my.cnf
下面的内容,若是内容冲突,优先命令行上的参数。数据库
退出命令以下:vim
# mysqladmin -uroot shutdown
复制代码
3. 直接使用 mysqld_safe 登陆centos
登陆
# mysqld_safe &
退出
# mysqladmin -uroot shutdown
2021-01-20T04:08:32.753363Z mysqld_safe mysqld from pid file /data/mysql/data/VM-0-3-centos.pid ended
[1]+ 完成 mysqld_safe
复制代码
影响数据库的启动bash
影响客户端的功能,如登陆服务器
初始化配置文件(例如:/etc/my.cnf)markdown
启动命令行中进行设置(例如:mysqld_safe)session
预编译时设置(仅限编译安装时设置)
[标签]
xxx=xxx
[标签]
xxx=xxx
复制代码
服务端:
[mysqld]
[mysqld_safe]
[server]
复制代码
客户端:
[mysql]
[mysqladmin]
[mysqldump]
[client]
复制代码
# 服务器端配置
[mysqld]
# 用户
user=mysql
# 软件安装目录
basedir=/home/service/mysql
# 数据路径
datadir=/data/mysql/data
# socket 文件位置
socket=/tmp/mysql.sock
# 服务器 ID(1-65535)
server_id=6
# 端口号
port=3306
复制代码
# 客户端配置
[mysql]
# socket 文件位置
socket=/tmp/mysql.sock
复制代码
# mysqld --help --verbose | grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
复制代码
MySQL 会依次读取这些文件,所以后面的文件会覆盖前面的文件,可是咱们不建议这么作!!!
--defaults-file
复制代码
# service mysqld stop
# mysqld_safe --defaults-file=/tmp/aa.cnf &
# mysql
复制代码
mysql -u用户名 -p密码 -h IP -P端口号
复制代码
注意:使用 TCP/IP 登陆首先要看一下该用户能不能登陆。
咱们登录一下试试:
# mysql -uwys -p -h 172.21.0.3 -P3306
Enter password:
ERROR 1045 (28000): Access denied for user 'wys'@'172.21.0.3' (using password: NO)
复制代码
咱们再使用 root 用户登陆一下,查看一下当前用户。
mysql> select user,host from mysql.user;
+---------------+------------+
| user | host |
+---------------+------------+
| user1 | 10.0.0.% |
| user4 | 10.0.0.* |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
| user2 | localhost |
+---------------+------------+
6 rows in set (0.00 sec)
复制代码
发现没有用户 wys,咱们建立一下用户,再给该用户受权。
mysql> create user wys@'172.21.0.3';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to wys@'172.21.0.3' with grant option;
Query OK, 0 rows affected (0.00 sec)
复制代码
再次使用该用户进行登陆,发现登陆成功。
# mysql -uwys -p -h 172.21.0.3 -P3306
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
......
复制代码
注意:若是咱们写了 -P
,前面必定要有 -h
。-h
不能够省略,可是 -P
能够省略,由于默认是 3306。
若是咱们写成 mysql -uwys -p -P3306
,mysql 就会以本地 socket 方式链接。
mysql -u用户名 -p密码 -S socket 路径
复制代码
远程登陆
# mysql -uwys -p -h 172.21.0.3 -P3306
复制代码
mysql> show processlist;
+----+------+------------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+------------------+------+---------+------+----------+------------------+
| 8 | wys | 172.21.0.3:54724 | NULL | Query | 0 | starting | show processlist |
+----+------+------------------+------+---------+------+----------+------------------+
1 row in set (0.00 sec)
复制代码
本地登陆
# mysql
复制代码
mysql> show processlist;
+----+------+------------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+------------------+------+---------+------+----------+------------------+
| 8 | wys | 172.21.0.3:54724 | NULL | Sleep | 154 | | NULL |
| 9 | root | localhost | NULL | Query | 0 | starting | show processlist |
+----+------+------------------+------+---------+------+----------+------------------+
2 rows in set (0.00 sec)
复制代码
能够看到两个 Host 是不同的,本地登陆 的 Host 是 localhost
。远程登陆 的 Host 是 IP:链接线程
。
当咱们输入以下命令,这个登陆是远程登陆仍是本地登陆呢?
# mysql -uwys -S /tmp/mysql.sock -h 172.21.0.3 -P3306
复制代码
咱们再来执行一下 show processlist
命令。
mysql> show processlist;
+----+------+------------------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+------------------+------+---------+------+----------+------------------+
| 8 | wys | 172.21.0.3:54724 | NULL | Sleep | 1839 | | NULL |
| 9 | root | localhost | NULL | Sleep | 1685 | | NULL |
| 14 | wys | 172.21.0.3:56436 | NULL | Query | 0 | starting | show processlist |
+----+------+------------------+------+---------+------+----------+------------------+
3 rows in set (0.00 sec)
复制代码
能够看出是远程登录的。
结论:当同时出现远程登陆和本地登陆,优先远程登陆。
# mkdir -p /data/330{7,8,9}/data
# cd /data/
# ll
总用量 16
drwxr-xr-x 3 root root 4096 1月 20 19:52 3307
drwxr-xr-x 3 root root 4096 1月 20 19:52 3308
drwxr-xr-x 3 root root 4096 1月 20 19:52 3309
drwxr-xr-x 3 root root 4096 1月 13 22:19 mysql
复制代码
cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/home/service/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF
复制代码
cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/home/service/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF
复制代码
cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/home/service/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF
复制代码
# mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/home/service/mysql
# mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/home/service/mysql
# mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/home/service/mysql
复制代码
# cd /etc/systemd/system/
# cp mysqld.service mysqld3307.service
# cp mysqld.service mysqld3308.service
# cp mysqld.service mysqld3309.service
复制代码
修改配置文件:
# vim mysqld3307.service
修改成:
ExecStart=/home/service/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
# vim mysqld3308.service
修改成:
ExecStart=/home/service/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
# vim mysqld3309.service
修改成:
ExecStart=/home/service/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
复制代码
# chown -R mysql.mysql /data/*
复制代码
# systemctl start mysqld3307.service
# systemctl start mysqld3308.service
# systemctl start mysqld3309.service
# ps -ef | grep mysql
mysql 10736 1 2 11:07 ? 00:00:00 /home/service/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
mysql 10774 1 3 11:07 ? 00:00:00 /home/service/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
mysql 10820 1 5 11:07 ? 00:00:00 /home/service/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
root 10859 28919 0 11:07 pts/0 00:00:00 grep --color=auto mysql
复制代码
# mysql -S /data/3307/mysql.sock
# mysql -S /data/3308/mysql.sock
# mysql -S /data/3309/mysql.sock
复制代码