自定义

修改MySQL管理员本机登陆密码 (已知root旧密码,修改新密码):

1,命令行
#mysqladmin -hlocalhost -uroot -p password "123qqq...A"
用户名 新密码

页面显示如下是正确的。warn只是警告,并不是错误:
Enter password: 输入当前密码
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

中文翻译如下:
输入密码:
mysql管理员:[警告]在命令行接口上使用密码可能是不安全的。
警告:由于密码将以纯文本形式发送到服务器,因此使用ssl连接确保密码安全。

单词含义:command line(命令行),insecure(不安全),plain(完全),ensure(确保)

# mysql -uroot -p123qqq...A 验证使用新密码能登陆
##################################################################################################
恢复MySQL管理员密码 (忘记root密码时):

单词含义:authentication(认证),string(字符串),privileges(特权)

# systemctl stop mysqld 工作中是不能停止数据库服务的,因为这样别人就访问不了,所以做出这个决定必须很谨慎!

# vim /etc/my.cnf
[mysqld]
skip_grant-tables 添加这一行!跳过授权表启动服务
secure_file_priv="/mydata"
default-storage-engine=myisam
#validate_password_policy=0 一定要注释掉这2行!
#validate_password_length=6 一定要注释掉这2行!


# systemctl start mysqld
# mysql 直接登陆数据库

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
... ...
| mysql | 授权库,可连接数据库的用户名和密码都放在这里
| performance_schema |
| studb |
| sys |
+--------------------+

mysql> desc mysql.user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | | 这是主机的字段
| User | char(32) | NO | PRI | | | 这是用户的字段
... ...
| authentication_string | text | YES | | NULL | | 这是密码字符串的字段
... ...


mysql> select user,host,authentication_string from mysql.user;
+-----------+-----------+-------------------------------------------+
| user | host | authentication_string |
+-----------+-----------+-------------------------------------------+
| root | localhost | *2A032F7C5BA932872F0F045E0CF6B53CF702F2C5 | 这就是root的密码加密后的字符串
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+-----------+-------------------------------------------+


mysql> select password(123456); 可看到123456这个数字加密后对应的字符串
+-------------------------------------------+
| password(123456) |
+-------------------------------------------+
| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 这是123456这个数字加密后对应的字符串
+-------------------------------------------+

mysql> update mysql.user
-> set authentication_string=password("123456")
-> where user="root" and host="localhost";

mysql> flush privileges; 刷新权限,privileges(特权)
mysql> quit

# systemctl stop mysqld
# vim /etc/my.cnf
[mysqld]
#skip_grant-tables 注释掉这一行,不要跳过授权表就启动服务
secure_file_priv="/mydata"
default-storage-engine=myisam
validate_password_policy=0 打开这2行的注释
validate_password_length=6 打开这2行的注释

# systemctl start mysqld
# mysql -uroot -p123456
########################################################################################
普通用户从其他客户端上登陆mysql并更改自己的密码

# mysql -h192.168.4.50 -uu1 -p123456 用户u1在其他客户端上,使用密码123456,进入192.168.4.50的mysql
MySQL [(none)]> set password = password("654321"); 把自己的密码改为654321
#########################################################################################
root修改普通用户的密码 (普通用户u1自己忘记自己的密码了):

# mysql -uroot -p123456 管理员登陆到mysql
mysql> set password for u1@"%"=password("123456"); 成功修改普通用户u1的密码为123456
#########################################################################################
常见报错:
mysql> select password(123qqq...A); 不是纯数字的字符都要用双引号""引起来,像这样写("123qqq...A")
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '..A)' at line 1

中文翻译:
错误 1064(42000):您的SQL语法有错误;请检查与MySQL服务器版本对应的手册,以找到在第1行中使用接近“..A”的语法

单词含义:syntax(语法),manual(手册,手动),version(版本),corresponds(对应的,一致的)
##########################################################################################
# tar -xvf mysql-5.7.17.tar
# ls *.rpm
# yum -y install perl-JSON
# rpm -Uvh mysql-community-*.rpm

# rpm -qa | grep -i mysql

一共11个程序!
mysql-community-client-5.7.17-1.el7.x86_64
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64
mysql-community-test-5.7.17-1.el7.x86_64
mysql-community-common-5.7.17-1.el7.x86_64
mysql-community-devel-5.7.17-1.el7.x86_64
mysql-community-libs-compat-5.7.17-1.el7.x86_64
mysql-community-libs-5.7.17-1.el7.x86_64
mysql-community-embedded-5.7.17-1.el7.x86_64
mysql-community-embedded-compat-5.7.17-1.el7.x86_64
mysql-community-embedded-devel-5.7.17-1.el7.x86_64
mysql-community-server-5.7.17-1.el7.x86_64

[root@mysql50 ~]# ls *.rpm

一共11个rpm包!
mysql-community-client-5.7.17-1.el7.x86_64.rpm
mysql-community-common-5.7.17-1.el7.x86_64.rpm
mysql-community-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
mysql-community-libs-5.7.17-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
mysql-community-server-5.7.17-1.el7.x86_64.rpm
mysql-community-test-5.7.17-1.el7.x86_64.rpm

# rm -rf *.rpm
---------------------------------
# systemctl start mysqld
# systemctl enable mysqld
# systemctl status mysqld
# netstat -tunlp | grep :3306
# ps -C mysqld 或# ps aux | grep mysqld
# ls /var/lib/mysql
# ls /etc/my.cnf

# ps aux | grep -i mysqld
# grep mysql /etc/passwd
# grep mysql /etc/group

# ls -l /var/lib/mysql #所有者和所属组都是mysql
# ls -ld /var/lib/mysql #所有者和所属组都是mysql
-------------------------------------
mysql -h数据库服务器IP地址或主机名 -u数据库里的用户名 -p密码

mysql -hlocalhost -uroot -p密码

初始登陆密码放在日志文件 /var/log/mysqld.log里面
# ls /var/log/mysqld.log
# grep password /var/log/mysqld.log
2018-11-16T02:24:41.343814Z 1 [Note] A temporary password is generated for root@localhost: RU(7s-nfPe5M
#冒号后面就是初始密码,不包括空格
# mysql -hlocalhost -uroot -p'RU(7s-nfPe5M'
-------------------------------
登陆到数据库后是这样的页面
... ...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql> \h # \h可以看到各个命令
-------------------------------
mysql> show databases; #用初始密码登陆后,是无法看到库的信息的。因为它认为不安全,必须改了root密码后,才能看到。
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
---------------------------------
mysql> alter user root@"localhost“ identified by "123qqq...A"。
"> ;
"> ^C

如果打错了要摁ctrl+c停止!!!
或者\c 可以停止当前的命令!!!
------------------------------
mysql> alter user root@"localhost" identified by "123qqq...A"; #更改密码为123qqq...A
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

[root@mysql50 mysql]# mysql -hlocalhost -uroot -p'123qqq...A'
mysql> show databases;
--------------------------------
在IP地址是192.168.4.51的主机上运行mysql服务
数据库管理员root本机登陆密码是123qqq...A
--------------------------------------------
数据库服务的基本使用:
1,修改密码策略:
# mysql -hlocalhost -uroot -p'123qqq...A'
mysql> show variables like "%password%";
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> alter user root@"localhost" identified by "123456";

# vim /etc/my.cnf
... ...
[mysqld]
validate_password_policy=0 #在[mysqld] 下面添加这2行
validate_password_length=6 #在[mysqld] 下面添加这2行
... ...


# systemctl start mysqld
# mysql -hlocalhost -uroot -p123456
mysql> show databases;
##########################################################################################
常见错误1:导入文件时出错

mysql> load data infile "/mydata/passwd"
-> into table userdb.usertab
-> fields terminated by ":"
-> lines terminated by "\n";
ERROR 1406 (22001): Data too long for column 'comment' at row 25
它在这里已经提示了:要导入的文件在25行的值对于表里的comment字段来说太长了,也就是之前创建表的时候,comment给的字段长度不够容纳


这是/etc/passwd第25行的内容
# head -25 /etc/passwd | tail -1
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin


mysql> create table userdb.usertab(
-> name char(20),
-> password char(1),
-> uid int,
-> gid int,
-> comment char(50),
-> homedir char(150),
-> shell char(150)
-> );
Query OK, 0 rows affected (0.22 sec)

mysql> desc userdb.usertab;
+----------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-----------+------+-----+---------+-------+
| name | char(20) | YES | | NULL | |
| password | char(1) | YES | | NULL | |
| uid | int(11) | YES | | NULL | |
| gid | int(11) | YES | | NULL | |
| comment | char(50) | YES | | NULL | | 字段长度才50,不够装得下要导入的文件
| homedir | char(150) | YES | | NULL | |
| shell | char(150) | YES | | NULL | |
+----------+-----------+------+-----+---------+-------+
###########################################################################################
常见错误2:导入文件时出错

mysql> load data infile "/data/passwd" 当前指定的目录是/mydata,文件在那里。这里写错了目录
-> into table userdb.usertab
-> fields terminated by ":"
-> lines terminated by"\n";
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement


因为在安装MySQL的时候限制了导入与导出的目录不一样,我们只能在规定的目录下才能导入。
需要通过下面命令查看 secure-file-priv 当前规定的目录在哪里。
mysql> show variables like "secure_file_priv";
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| secure_file_priv | /mydata/ |
+------------------+----------+

 

mysql> load data infile "/mydata/passwd"
-> into table userdb.usertab
-> fields terminated by ":"
-> lines terminated by "\n";

 

posted @ 2019-04-30 22:18  安于夏  阅读(502)  评论(0编辑  收藏  举报