发表于: 2018-04-06 09:38:15
1 794
day9
今天完成的事情:
1.在Ubuntu上安装mysql,并实现远程链接
1.1 更新系统
apt-get update 【注意:要在root用户下】
1.2 安装mysql-server
apt-get install mysql-server
【apt-get isntall mysql-client
apt-get install libmysqlclient-dev
以上两条命令用于安装mysql客户端和其他相关,现在用不到先不装 】
1.3 使用如下命令查询是否安装成功:
sudo netstat -tap | grep mysql
重启mysql
/etc/init.d/mysql restart
登陆:
mysql -uroot -p<你的密码>
1.4 授权远程
默认是不能用客户端远程连接的,只能本地连接,所以去将设置改一下
首先登录mysql后,输入 use mysql ,然后输入以下
update user set host='%' where user='root' and host='localhost';
因为所有的账户及权限都在mysql的user表里,如下图
可以看到Host列下localhost代表这个用户只支持本地访问,即只接受本地的ip, 而%代表接受所有ip的访问,所以update user set host='%' where user='root' and host='localhost';这一命令,相当于一句SQL语句将root的Host字段设为%,权限为%则表示任意ip都能连接。
然后 flush privileges; #刷新权限表,使刚才的配置生效
也可以授权一个叫Ubuntu的账户,并授予它远程连接的权力,命令如下:
GRANT ALL PRIVILEGES ON *.* TO 'Ubuntu'@'%' IDENTIFIED BY '123456x' WITH GRANT OPTION;
运行完后紧接着输入,以更新数据库:
FLUSH PRIVILEGES;
上面的'Ubuntu'可以替换成你指定的名字,'123456' 可以替换为你的密码。
由于MySQL默认支持本地使用,没有开放远程连接,于是需要到配置文件中去修改,
执行 vim /etc/mysql/mysql.conf.d/mysqld.cnf ,把里面的"bind-address = 127.0.0.1"注释掉,或者改为"bind-address = * "
关于这里的bind-address是什么,见下图,后面参数设置为* ,代表接收所有的IPv4 或 IPv6 连接请求。
总的来说两步,第一步将host里的权限有localhost(只能本地访问)改为%(都可以访问),第二步将/etc/mysql/mysql.conf.d/mysqld.cnf 下的"bind-address = 127.0.0.1"注释掉。
最后在阿里云安全组开启3306端口入口。
1.5 测试是否能连接
1.5.1 打开Navicat测试下能不能连接成功,然后是成功的。
然后我把账户换成刚才授权的Ubuntu,测试也是成功的。
1.5.2 测试用本地命令行连接
打开命令行输入 >mysql -u <用户名> -h <服务器公网ip> -p ,再输入密码,连接成功。
1.6 如果遇到报错
ERROR 1045 (28000): Access denied for user 'Ubuntu'@'localhost' (using password: YES)
以上的报错一般是密码输出了或者其他,可以采取以下方案:
如果你密码忘了或者其他原因无法登录mysql了,输入指令cat /etc/mysql/debian.cnf ,看到如下
那个debian-sys-maint账户是预留的用来解决这种情况的,直接mysql -u debian-sys-maint -p,然后输入红框里的密码,就可以登录了。登录后就可以为所欲为了,你是要修改之前忘记的密码,还是要新建一个授权远程访问的账户,都可以。
可能用到的指令
#启动
sudo service mysql start
#停止
sudo service mysql stop
#服务状态
sudo service mysql status
阿里云服务器Ubuntu 16.04 3安装mysql
参考链接:https://www.cnblogs.com/ywf520/p/7660668.html
2.安装jdk1.8到服务器并配置环境变量
2.1
先建好目录,我的是/root/opt/java,用mkdir指令即可,
然后执行 wget <jdk下载链接>,我的是
wget http://download.oracle.com/otn-pub/java/jdk/8u161b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-i586.tar.gz
然后嗖的一下就下好了,这可以180m多的包啊
用可视化工具WinSCP看了下,果然下好了,然后执行解压命令tar -zxvf jdk-8u161-linux-i586.tar.gz
报错,说不是gzip格式的,然后去网上查原因,问题出在wget指令上,正常我们下载jdk都要同意一个协定的,但这个指令没有这一过程,而且还看网上说这下下来的其实是个html文件,我用WinSCP看了下,果然是个6kb的html。。。。。(我说怎么一秒就下好了,还惊叹了下服务器下东西的网速)
那怎么办,老老实实的下到windows本地, 然后上传到服务器上,再执行解压命令吧。
WinSCP还是很好用的,直接拖过来就好,左面本地右面服务器,然后上传速度也挺快。
下好后执行解压命令tar -zxvf jdk-8u161-linux-i586.tar.gz,然后页面刷刷刷都是解压的路径东东,感觉像黑客一样。同时多了名为jdk1.8.0_161的文件夹。
小课堂:
今天在审查日报时看到如下代码
try (Connection c = getConnection(); PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, start);
ps.setInt(2, count);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Student stu = new Student();
int id = rs.getInt(1);
int student_id = rs.getInt("student_id");
long qq = rs.getLong("qq");
String name = rs.getString("name");
stu.id = id;
stu.name = name;
stu.student_id =student_id;
stu.qq=qq;
students.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}
疑问一:Connection和PreparedStatement为何不在finally中关闭
疑问二:try()中的代码什么意思
怀着这样的疑问,查了一些资料,知道了这是jdk7的新特性,名称 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。新的语句支持包括流以及任何可关闭的资源。数据流会在 try 执行完毕后自动被关闭,try()的括号中可以写多行声明,每个声明的变量类型都必须是Closeable的子类,用分号隔开。总之它们相当于之前的finally。
明天计划的事情:
希望能配好jdk的环境变量,能的话就能开始下一步了。
遇到的问题:
按照网上的教程来的,但是jdk环境变量没有配好,按java -version总是报错
收获:
早岁那知世事艰,中原北望气如山
楼船夜雪瓜洲渡,铁马秋风大散关
评论