mysql多实例登录常见问题

mysql这边多实例登录不能直接登录,因为这边是有多个端口在启动着的,需要用对应的sock去登录,例如

# 先把mysql加到环境变量里
cp /application/mysql/bin/* /usr/local/sbin/

mysql -uroot -p -S /data/3306/mysql.sock 
mysql -uroot -p -S /data/3307/mysql.sock

#没有密码的情况
mysql -S /data/3306/mysql.sock 
mysql -S /data/3307/mysql.sock

我们创建下数据库的密码,并且做下基本的数据库安全措施

#数据库设置密码

mysqladmin password 123456 -S /data/3306/mysql.sock
mysqladmin password 123456 -S /data/3307/mysql.sock

#查看下数据库默认的database

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

#删除掉test

mysql> drop database test;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

#看下用户的情况
mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | localhost |
| root | localhost |
+------+-----------+

#只保留两个

mysql> drop user ""@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> drop user "root"@"::1";
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | master    |
+------+-----------+

也可以用过SQL语句来设置密码

UPDATE mysql.user SET password=PASSWORD("123456") WHERE user='root' and host='localhost';
# 上面PASSWORD表示密码是非明文
flush privileges;

数据库启动停止原理

# mysql启动命令就是调用的mysqld_safe
mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1>/dev/null &  

# mysql停止命令
mysqladmin -u[mysql_user] -p[mysql_pwd] -S /data/3306/mysql.sock shutdown 

# 上面所述的/etc/init.d/mysqld start 相当于
mysqld_safe 2>&1>/dev/null &  

# 上面所述的/etc/init.d/mysqld stop相当于
kill pidnumber (不要带-9)

命令行修改登录提示符

# 临时生效
prompt \u@lidun \r:\m:\s->
PROMPT set to '\u@lidun \r:\m:\s->'

效果:

root@lidun 01:57:52->
root@lidun 01:57:53->
root@lidun 01:57:54->

mysql忘记密码

# 1、首先停止mysql,我们这边进行kill掉对应的进程
kill [mysql-pid]

# 2、启动数据库,进入数据库
mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables & 
mysql -S /data/3306/mysql.sock

# 3、然后我们就可以修改下数据库的密码了
update mysql.user set password=PASSWORD("nishishui123") where user='root' and host='localhost';
flush privileges;

 

数据库安全基本设置

1、启动程序设置成700,属主和用户组为mysql
2、为Mysql超级用户设置密码
3、如果要求严格可以删除root用户,创建其它管理用户,例如admin
4、登录时尽量不要在命令行爆漏密码,备份脚本中如果有密码,给设置700,属主和用户组为mysql或root
5、删除默认存在的test库
6、删除无用的用户,只保留
| root | 127.0.0.1 |
| root | localhost |
7、授权用户对于的主机不要用%。权限不要给all,最小化授权,从库只给select。
8、清理mysql操作日志文件~/.mysql_history
9、禁止开发获取到web连接的密码,禁止开发连接操作生产对外的库。
10、phpmyadmin安全
11、服务器禁止设置外网IP
12、不要一个用户管所有的库,尽量专库专用户。

 

posted @ 2017-10-31 15:50  Day.By.Day  阅读(668)  评论(0)    收藏  举报